Pagini recente » Cod sursa (job #83033) | Cod sursa (job #1140076) | Cod sursa (job #458863) | Cod sursa (job #177653) | Cod sursa (job #138244)
Cod sursa(job #138244)
#include<stdio.h>
#include<string.h>
#define NMAX 500000
long n,m,j,i,a,b,aa,q,bb;
char s[NMAX],s1[NMAX],s2[NMAX],s3[NMAX],null[NMAX];
long fibo(long n)
{
long a,b,i,c;
if (n==1) return 1;
if (n==2) return 1;
a=1;
b=1;
for (i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
return c;
}
void afis()
{
if (n%2==1)
{
for (i=0;i<=aa-1;i++)
printf("%c",s[i]);
printf("\n");
for (i=aa;i<=bb+aa-1;i++)
printf("%c",s[i]);
printf("\n");
}
else
{
for (i=bb;i<=aa+bb-1;i++)
printf("%c",s[i]);
printf("\n");
for (i=0;i<=bb-1;i++)
printf("%c",s[i]);
printf("\n");
}
}
int main()
{
freopen("lampa.in","r",stdin);
freopen("lampa.out","w",stdout);
scanf("%ld%ld",&n,&m);
gets(s);
gets(s);
a=fibo(n-2);
b=fibo(n-1);
aa=-1;
for (j=1;j<=m;j++)
if ((m-a*j)%b==0)
{
aa=j;
bb=(m-a*j)/b;
if (n%2==1)
{
q=-1;
for (i=0;i<=aa-1;i++)
{
s1[++q]=s[i];
s1[q+1]=NULL;
}
q=-1;
for (i=aa;i<=bb+aa-1;i++)
{
s2[++q]=s[i];
s2[q+1]=NULL;
}
}
else
{
q=-1;
for (i=bb;i<=aa+bb-1;i++)
{
s1[++q]=s[i];
s1[q+1]=NULL;
}
q=-1;
for (i=0;i<=bb-1;i++)
{
s2[++q]=s[i];
s2[q+1]=NULL;
}
}
for (i=3;i<n;i++)
{
strcat(s3,s1);
strcat(s3,s2);
strcpy(s1,s2);
strcpy(s2,s3);
}
if (!strcmp(s,s2))
{
afis();
return 0;
}
strcpy(s1,null);
strcpy(s2,null);
strcpy(s3,null);
}
printf("0\n");
return 0;
}