Pagini recente » Cod sursa (job #1335072) | Cod sursa (job #1047985) | Cod sursa (job #1640019) | Cod sursa (job #2680028) | Cod sursa (job #1635732)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("lampa.in");
ofstream fout("lampa.out");
const int nmax= 25;
int n, m;
int fib[nmax+1];
string s, s2[2], k[2];
bool check( int a, int b ) {
if ( a*b==0 || a+b>m )
return 0;
s2[0].clear(), s2[1].clear(), k[1].clear(), k[0].clear();
if ( n%2==1 ) {
for ( int i= 0; i<a; ++i ) {
k[1].push_back(s[i]);
}
for ( int i= a; i<a+b; ++i ) {
k[0].push_back(s[i]);
}
} else {
for ( int i= b; i<a+b; ++i ) {
k[1].push_back(s[i]);
}
for ( int i= 0; i<b; ++i ) {
k[0].push_back(s[i]);
}
}
s2[1].push_back('a');
s2[0].push_back('b');
for ( int i= 3, t= 1; i<=n; ++i, t^= 1 ) {
for ( int j= 0; j<(int)s2[t^1].size(); ++j ) {
s2[t].push_back(s2[t^1][j]);
}
}
for ( int i= 0, j= 0, t= n%2; i<(int)s2[t].size(); ++i ) {
if ( s2[t][i]=='a' ) {
for ( int cnt= 0; cnt<(int)k[1].size(); ++cnt, ++j ) {
if ( k[1][cnt]!=s[j] )
return 0;
}
} else {
for ( int cnt= 0; cnt<(int)k[0].size(); ++cnt, ++j ) {
if ( k[0][cnt]!=s[j] )
return 0;
}
}
}
return 1;
}
int main( ) {
fib[1]= fib[2]= 1;
for ( int i= 3; i<=nmax; ++i ) {
fib[i]= fib[i-1]+fib[i-2];
}
fin>>n>>m>>s;
int a= fib[n-2], b= fib[n-1], a2, x, y, ok= 0;
/*for ( a2= 0; a2<=b-1 && a*a2%b!=1; ++a2 ) ;
for ( x= (m*a2)%b, y= (m-a*x)/b; x<=m; ) {
if ( check(x, y)==1 ) {
ok= 1;
break;
}
x+= b;
y= (m-a*x)/b;
}*/
if ( ok==0 ) {
fout<<"0\n";
return 0;
}
if ( n%2==1 ) {
for ( int i= 0; i<x; ++i ) {
fout<<s[i];
}
fout<<"\n";
for ( int i= x; i<x+y; ++i ) {
fout<<s[i];
}
fout<<"\n";
} else {
for ( int i= y; i<x+y; ++i ) {
fout<<s[i];
}
fout<<"\n";
for ( int i= 0; i<y; ++i ) {
fout<<s[i];
}
fout<<"\n";
}
return 0;
}