Pagini recente » Cod sursa (job #2726403) | Cod sursa (job #2850698) | Cod sursa (job #2129889) | Cod sursa (job #1944462) | Cod sursa (job #195040)
Cod sursa(job #195040)
#include <stdio.h>
#include <string.h>
const int N_MAX = 110;
char a[N_MAX][N_MAX][N_MAX], b[N_MAX][N_MAX][N_MAX];
char sol[N_MAX];
void add(char A[], char B[])
{
int i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; i ++, t /= 10) {
A[i] = (t += A[i] + B[i]) % 10;
}
A[0] = i - 1;
}
int main()
{
freopen("pavare2.in", "r", stdin);
#ifndef _SCREEN_
freopen("pavare2.out", "w", stdout);
#endif
int N, A, B, K;
scanf("%d %d %d\n", &N, &A, &B);
scanf("%d\n", &K);
a[1][1][0] = a[1][1][1] = 1, b[1][1][0] = b[1][1][1] = 1;
for (int i = 2; i <= N; i ++) {
for (int j = 1; j <= i; j ++) {
a[i][j][0] = b[i][j][0] = 1;
if (j > A) a[i][j][0] = 1;
else {
if (j >= 2) memcpy(a[i][j], a[i - 1][j - 1], sizeof(a[i - 1][j - 1]));
else {
for (int k = 1; k <= B; k ++) add(a[i][j], b[i - 1][k]);
}
}
if (j > B) b[i][j][0] = 1;
else {
if (j >= 2) memcpy(b[i][j], b[i - 1][j - 1], sizeof(b[i - 1][j - 1]));
else {
for (int k = 1; k <= A; k ++) add(b[i][j], a[i - 1][k]);
}
}
}
}
sol[0] = 1;
for (int i = 1; i <= A; i ++) add(sol, a[N][i]);
for (int i = 1; i <= B; i ++) add(sol, b[N][i]);
for (int i = sol[0]; i >= 1; i --) printf("%d", sol[i]);
printf("\n");
int j;
for (int i = 1; i <= N;) {
for (j = i; j <= i + A - 1 && j <= N; j ++) printf("0");
if (j <= N) printf("1");
i = i + A + 1;
}
printf("\n");
return 0;
}