Pagini recente » Cod sursa (job #1102969) | Istoria paginii runda/oji10_2019 | Cod sursa (job #2990906) | Cod sursa (job #3164069) | Cod sursa (job #143789)
Cod sursa(job #143789)
#include <stdio.h>
#include <string.h>
long n,m,i,j,k,ok,f[27],nra,nrb,r,l,nr1,nr2,cc,poz;
char ch[3028000],sol1[100000],sol2[100000],cuv1[100000],cuv2[100000];
char c1[100000],c2[100000],c3[100000];
int main(){
freopen("lampa.in","r",stdin);
freopen("lampa.out","w",stdout);
scanf("%ld %ld\n",&n,&m);
scanf("%s",ch);
f[1]=1;
f[2]=1;
strcpy(c1,"1");
strcpy(c2,"2");
for (i=3;i<=n;i++){
f[i]=f[i-1]+f[i-2];
strcpy(c3,c1);
strcat(c3,c2);
strcpy(c1,c2);
strcpy(c2,c3);
}
nra=f[n-2];
nrb=f[n-1];
for (i=1;i<=m/nra;i++){
r=m-nra*i;
if (r%nrb==0){
j=r/nrb;
if (!j)continue;
if (n%2==1){
for (k=0;k<i;k++)
cuv1[k]=ch[k];
cuv1[i]=0;
for (k=i;k<i+j;k++)
cuv2[k-i]=ch[k];
cuv2[j]=0;
l=strlen(c2);
nr1=0;nr2=0;
cc=1;
for (k=0;k<l;k++)
if (c2[k]=='1'){
poz=nr1*i+nr2*j;
nr1++;
for (r=poz;r<poz+i;r++)
if (ch[r]!=cuv1[r-poz]){cc=0;break;}
if (!cc)break;
}
else{
poz=nr1*i+nr2*j;
nr2++;
for (r=poz;r<poz+j;r++)
if (ch[r]!=cuv2[r-poz]){cc=0;break;}
if (!cc)break;
}
if (!cc)continue;
}
else{
for (k=0;k<j;k++)
cuv1[k]=ch[k];
cuv1[j]=0;
for (k=j;k<i+j;k++)
cuv2[k-j]=ch[k];
cuv2[i]=0;
l=strlen(c2);
nr1=0;nr2=0;
cc=1;
for (k=0;k<l;k++)
if (c2[k]=='1'){
poz=nr1*j+nr2*i;
nr1++;
for (r=poz;r<poz+j;r++)
if (ch[r]!=cuv1[r-poz]){cc=0;break;}
if (!cc)break;
}
else{
poz=nr1*j+nr2*i;
nr2++;
for (r=poz;r<poz+i;r++)
if (ch[r]!=cuv2[r-poz]){cc=0;break;}
if (!cc)break;
}
if (!cc)continue;
}
if (ok==0){
strcpy(sol1,cuv1);
strcpy(sol2,cuv2);
ok=1;
}
else
if (strcmp(sol1,cuv1)>0){
strcpy(sol1,cuv1);
strcpy(sol2,cuv2);
}
}
}
printf("%s\n",sol1);
printf("%s\n",sol2);
return 0;
}