Pagini recente » Cod sursa (job #902468) | Cod sursa (job #1880594) | Cod sursa (job #2924566) | Cod sursa (job #1266883) | Cod sursa (job #138330)
Cod sursa(job #138330)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define FIN "lampa.in"
#define FOUT "lampa.out"
#define MAX_S 3100000
#define sz(x) ((int)(x).size())
int N, M; string A, B, C, S;
ifstream fin; ofstream fout;
void works(const char a[], const char b[])
{
int i, p = 0, n = strlen(a), m = strlen(b);
for (i = 0; i < sz(C); ++i)
if (C[i] == 'A')
{
if (memcmp(S.c_str()+p, a, n)) return;
p += n;
}
else
{
if (memcmp(S.c_str()+p, b, m)) return;
p += m;
}
fout << a << endl << b << endl;
exit(0);
}
int main(void)
{
int i, j, a, b;
fin.open(FIN, ios::in);
fout.open(FOUT, ios::out);
fin >> N >> M >> S;
A = "A"; B = "B";
for (i = 3; i <= N; ++i)
{
C = A+B;
A = B; B = C;
if (i == N-2) a = sz(C);
if (i == N-1) b = sz(C);
}
for (i = 1; i*a <= M; ++i)
{
j = M-i*a;
if (j%b) continue;
j /= b;
A = N&1 ? S.substr(0, i) : S.substr(j, i);
B = N&1 ? S.substr(i, j) : S.substr(0, j);
works(A.c_str(), B.c_str());
}
fout << 0 << endl;
return 0;
}