Pagini recente » Cod sursa (job #1223034) | Cod sursa (job #1689772) | wellcodesimulareclasa10-11martie | Cod sursa (job #1595646) | Cod sursa (job #179529)
Cod sursa(job #179529)
#include<fstream>
#include<string.h>
using namespace std;
char s[3027200];
char ant[1600], crt[1600], aux[1600];
char A[1600], B[1600];
int main(){
ifstream fin("lampa.in");
ofstream fout("lampa.out");
int N,M;
fin>>N>>M>>s;
ant[0] = 'a';
crt[0] = 'b';
ant[1] = crt[1] = 0;
for(int i=3;i<=N;i++){
strcpy(aux,ant);
strcat(aux,crt);
strcpy(ant,crt);
strcpy(crt,aux);
}
int catea=0, cateb=0;
for(int i=0;crt[i];i++)
if(crt[i] == 'a')
catea++;
else
cateb++;
int k;
for(k=1;s[k];k++){
if(k*catea < M && (M-catea*k) % cateb == 0 ){
int q = (M-catea*k) / cateb;
int cnt = 0;
if(crt[0] == 'a'){
strncpy(A,s,k);
for(int p=0;p<q;p++)
B[p] = s[k+p];
B[q] = 0;
}
else{
strncpy(B,s,q);
for(int p=0;p<k;p++)
A[p] = s[q+p];
A[k] = 0;
}
int i;
for(i=0;crt[i];i++){
int flag = 1;
if(crt[i] == 'a')
for(int tz=0;tz<k;tz++)
if(s[cnt+tz] != A[tz]){
flag = 0;
break;
}
if(crt[i] == 'b')
for(int tz=0;tz<q;tz++)
if(s[cnt+tz] != B[tz]){
flag = 0;
break;
}
if(flag == 0)
break;
if(crt[i] == 'a')
cnt += k;
else
cnt += q;
}
if(crt[i] == 0)
break;
}
}
if(s[k])
fout<<A<<"\n"<<B<<"\n";
else
fout<<"0\n";
fin.close();
fout.close();
return 0;
}