Pagini recente » Cod sursa (job #2925831) | Cod sursa (job #1338802) | Cod sursa (job #2379859) | Cod sursa (job #1842115) | Cod sursa (job #328036)
Cod sursa(job #328036)
#include <fstream>
#include <string>
using namespace std;
#define mp make_pair
int N,M;
string S,fu,fp,fn,A,B;
ifstream f("lampa.in");
ofstream g("lampa.out");
int verifica(int la,int lb)
{
int i,j=0,k;
A="";B="";
if (fn[0]=='a')
{
for (i=0;i<la;++i) A+=S[j++];
for (i=0;i<lb;++i) B+=S[j++];
}
else
{
for (i=0;i<lb;++i) B+=S[j++];
for (i=0;i<la;++i) A+=S[j++];
}
for (i=2;i<(int)fn.length();++i)
if (fn[i]=='a')
{for (k=0;k<la;++k) if (S[j++]!=A[k]) return 0;}
else
{for (k=0;k<lb;++k) if (S[j++]!=B[k]) return 0;}
return 1;
}
int main()
{
int i,j;
pair<int,int> ult,pen,now;
f>>N>>M;
getline(f,S);
getline(f,S);
ult=mp(1,0);
pen=mp(0,1);
fu="a";fp="b";
for (i=3;i<=N;++i)
{
now=mp(ult.first+pen.first,ult.second+pen.second);
ult=pen;pen=now;
fn=fu+fp;
fu=fp;fp=fn;
}
for (i=1,M-=now.first;M>0;++i,M-=now.first)
if (M%now.second==0)
{
j=M/now.second;
if (verifica(i,j))
{
g<<A<<'\n'<<B;
return 0;
}
}
g<<0;
return 0;
}