Pagini recente » Cod sursa (job #2814136) | Cod sursa (job #57426) | Cod sursa (job #764955) | Cod sursa (job #1349441) | Cod sursa (job #179338)
Cod sursa(job #179338)
#include <fstream>
#define MAX 101
using namespace std;
int a[MAX][MAX][3][MAX], K[MAX];
int rez[MAX];
int n, A, B;
void sub(int X[], int Y[])
{
int i, t = 0;
for (i = 1; i <= X[0]; i++)
X[i] += (t = (X[i] -= Y[i] + t) < 0) * 10;
for (; X[0] > 1 && !X[X[0]]; X[0]--);
}
void add(int X[], int Y[])
{
int i, t = 0;
for (i = 1; i <= X[0] || i <= Y[0] || t; i++, t/=10)
X[i] = (t += X[i] + Y[i]) % 10;
X[0] = i - 1;
}
int main()
{
int i, j, k, t, p;
string s;
ifstream fin("pavare2.in");
fin >> n >> A >> B;
fin >> s;
K[0] = s.length();
for (i = K[0]-1, j = 1; i >= 0; i--, j++)
K[j] = s[i]-'0';
fin.close();
for (i = 1; i <= n; i++)
{
a[i][i][0][0] = a[i][i][0][1] = 1;
a[i][i][1][0] = a[i][i][1][1] = 1;
for (j = 1; j <= A && j < i; j++)
{
a[i][j][0][0] = 1;
for (k = 1; k <= B && k <= i-j; k++)
add(a[i][j][0], a[i-j][k][1]);
}
for (j = 1; j <= B && j <= i; j++)
{
a[i][j][1][0] = 1;
for (k = 1; k <= A && k <= i-j; k++)
add(a[i][j][1], a[i-j][k][0]);
}
}
ofstream fout("pavare2.out");
rez[0] = 1;
for (i = 1; i <= A; i++)
add(rez, a[n][i][0]);
for (i = 1; i <= B; i++)
add(rez, a[n][i][1]);
for (i = rez[0]; i >= 1; i--)
fout << rez[i];
fout << "\n";
j = 0;
for (i = 1; i <= n; i++)
if (j < A) { fout << "0"; j++; }
else { fout << "1"; j = 0; }
fout.close();
return 0;
}