Pagini recente » Cod sursa (job #89367) | Cod sursa (job #2469303) | Cod sursa (job #2056338) | Cod sursa (job #2252842) | Cod sursa (job #13101)
Cod sursa(job #13101)
#include <stdio.h>
#define max(a,b) (((a)>(b)) ? (a) : (b))
#define NMAX 101
long long i,j,n,m,A[NMAX][NMAX][1],a,b,k,kk;
/* A[i][j][0] = numerul de posibilitati de a pava i metri cu primii j albi */
/* A[i][j][1] = numerul de posibilitati de a pava i metri cu primii j negri */
int main()
{
freopen("pavare2.in","r",stdin);
freopen("pavare2.out","w",stdout);
scanf("%ld%ld%ld%ld",&n,&a,&b,&kk);
//Initializing data
/* A[0][1][0]=1; A[0][1][1]=1;*/ A[1][1][0]=1; A[1][1][1]=1;
//Recurente
for (i=2;i<=n;i++)
for (j=1;j<=i;j++)
{
long long sum=0;
for (k=1;k<=(i-j)|| k<=(a-j-1);k++)
sum+=A[i-j][k][0];
for (k=1;k<=(i-j)|| k<=b;k++)
sum+=A[i-j][k][1];
A[i][j][0]=sum;
sum=0;
for (k=1;k<=(i-j)||k<=a;k++)
sum+=A[i-j][k][0];
for (k=1;k<=(i-j)||k<=(b-j-1);k++)
sum+=A[i-j][k][1];
A[i][j][1]=sum;
}
int rez=0;
for (i=1;i<=a;i++)
rez+=A[n][i][0];
for (i=1;i<=b;i++)
rez+=A[n][i][1];
printf("%ld\n",rez);
m=n; long long ko=b;
while (m >= 0)
{
for (i=1;i<=a;i++)
{
printf("0");
m--;
if (m == 0)
break;
}
if (m == 0)
break;
if (ko > 0)
{
printf("1");
ko--;
}
m--;
}
fclose(stdin);
fclose(stdout);
return 0;
}