Pagini recente » Cod sursa (job #2985670) | Cod sursa (job #1766951) | Cod sursa (job #3138229) | Cod sursa (job #1368367) | Cod sursa (job #2113653)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("lampa.in");
struct fibonacci
{
int na, nb;
char ord[10002];
} f[32];
int n, m, ka, kb, poza[10002], pozb[10002];
char s[3200000];
inline int verif(int la, int lb)
{
int i, j;
for(i=0; i<=la-1; i++)
for(j=2; j<=ka; j++)
if(s[poza[j]+i]!=s[poza[1]+i])
return 0;
for(i=0; i<=lb-1; i++)
for(j=2; j<=kb; j++)
if(s[pozb[j]+i]!=s[pozb[1]+i])
return 0;
return 1;
}
int main()
{
int i, p, j, maxla, lb, curent, lmt;
freopen("lampa.out","w",stdout);
fin>>n>>m;
fin.get();
fin.getline(s,sizeof(s));
f[1].na=1;
f[2].nb=1;
strcat(f[1].ord,"A");
strcat(f[2].ord,"B");
for(i=3; i<=n; i++)
{
f[i].na=f[i-2].na+f[i-1].na;
f[i].nb=f[i-2].nb+f[i-1].nb;
strcat(f[i].ord,f[i-2].ord);
strcat(f[i].ord,f[i-1].ord);
}
maxla=m/f[n].na;
for(i=1; i<=maxla; i++)
if((m-f[n].na*i)%f[n].nb==0)
{
lb=(m-f[n].na*i)/f[n].nb;
curent=0, ka=0, kb=0;
lmt=f[n].na+f[n].nb-1;
for(j=0; j<=lmt; j++)
if(f[n].ord[j]=='A') poza[++ka]=curent, curent+=i;
else pozb[++kb]=curent, curent+=lb;
if(i==5)
i++,i--;
if(verif(i,lb))
{
for(p=poza[1]; p<=poza[1]+i-1; p++)
printf("%c",s[p]);
printf("%c",'\n');
for(p=pozb[1]; p<=pozb[1]+lb-1; p++)
printf("%c",s[p]);
printf("%c",'\n');
return 0;
}
}
printf("%d",0);
printf("%c",'\n');
return 0;
}