Pagini recente » Cod sursa (job #2159938) | Cod sursa (job #2905947) | Cod sursa (job #1177641) | Cod sursa (job #538302) | Cod sursa (job #156316)
Cod sursa(job #156316)
#include <fstream.h>
#include <string.h>
#define MAX 3040010
ifstream fin ("lampa.in");
ofstream fout ("lampa.out");
char a[MAX];
char gen1[30],gen2[30],final[30];
int evol[30][2];
int nr,Suma,nra,nrb;
void citire()
{
fin>>nr>>Suma;
fin.getline(a,MAX);
fin.getline(a,MAX);
fin.close();
}
void calcul()
{
evol[0][0]=1;
evol[1][1]=1;
for (int i=2;i<nr;i++)
{
evol[i][0]=evol[i-1][0]+evol[i-2][0];
evol[i][1]=evol[i-1][1]+evol[i-2][1];
}
nra=evol[nr-1][0];
nrb=evol[nr-1][1];
}
int adevar(int nra,int nrb)
{
int ok=0;
for (int p=0;p<nrb;p++)
if (a[Suma-p-1]==a[Suma-p-1-nra-nrb] && a[Suma-p-1]==a[Suma-p-1-nra-nrb-nrb])
ok=1;
else
return 0;
for (int i=0;i<nra;i++)
if (a[Suma-nrb-1]==a[Suma-nrb-nra-nrb-nrb-1])
ok=1;
else
return 0;
return 1;
}
void aflare()
{
double lga=0,lgb=0;
for (lgb=Suma/nrb;lgb>0;lgb--)
{
if ((int)(Suma-lgb*nrb)/nra==(double)(Suma-lgb*nrb)/nra)
if (adevar((Suma-lgb*nrb)/nra,lgb))
{
for (int i=Suma-lgb-((Suma-lgb*nrb)/nra);i<Suma-lgb;i++)
fout<<a[i];
fout<<"\n";
for (int j=Suma-lgb;j<Suma;j++)
fout<<a[j];
fout<<"\n";
return;
}
}
fout<<"0\n";
}
int main ()
{
citire();
calcul();
aflare();
return 0;
}