Pagini recente » Cod sursa (job #2930139) | Cod sursa (job #1139641) | Cod sursa (job #2140219) | Cod sursa (job #2266301) | Cod sursa (job #258174)
Cod sursa(job #258174)
#include<fstream>
#include<string.h>
#define max(a,b) (a>b?a:b)
#define MAX 1010900
using namespace std;
ifstream fin("lampa.in");
ofstream fout("lampa.out");
int N,M,fa,fb;
char cuv[MAX],A[MAX],B[MAX],aux[MAX];
int main(){
fin>>N>>M>>cuv;
fa=fb=1;
for(int i=1;i<N-2;i++){
int aux;
aux=fa;
fa=fb;
fb+=aux;
}
int ok=0;
for(int la=1;la<=(M-fb)/fa&&ok==0;la++){
int lb=(M-la*fa)/fb;
if(M==la*fa+lb*fb){
// char A[la],B[lb];
if(N%2){
for(int i=0;i<la;i++)
A[i]=cuv[i];
for(int i=0;i<lb;i++)
B[i]=cuv[i+la];
B[lb]=0;A[la]=0;
}
else{
for(int i=0;i<lb;i++)
B[i]=cuv[i];
for(int i=0;i<la;i++)
A[i]=cuv[i+lb];
A[la]=0;B[lb]=0;
}
int okk;
for(int i=3;i<=N;i++){
// char aux[max(strlen(A),strlen(B))];
strcpy(aux,A);
strcpy(A,B);
strcpy(B,aux);
strcat(B,A);
}
if(strcmp(B,cuv)==0)
okk=1;
else
okk=0;
if(okk){
if(N%2){
for(int i=0;i<la;i++)
A[i]=cuv[i];
for(int i=0;i<lb;i++)
B[i]=cuv[i+la];
B[lb]=0;A[la]=0;
}
else{
for(int i=0;i<lb;i++)
B[i]=cuv[i];
for(int i=0;i<la;i++)
A[i]=cuv[i+lb];
A[la]=0;B[lb]=0;
}
ok=1;
fout<<A<<"\n"<<B<<"\n";
}
}
}
if(ok==0)
fout<<0<<"\n";
fin.close();
fout.close();
return 0;
}