Pagini recente » Cod sursa (job #1672450) | Cod sursa (job #823252) | Cod sursa (job #2907989) | Cod sursa (job #1636088) | Cod sursa (job #217313)
Cod sursa(job #217313)
#include <fstream>
#include <cstring>
using namespace std;
#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 n,m,na,nb;
void citire()
{
fin>>n>>m;
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<n;i++)
{
evol[i][0]=evol[i-1][0]+evol[i-2][0];
evol[i][1]=evol[i-1][1]+evol[i-2][1];
}
na=evol[n-1][0];
nb=evol[n-1][1];
}
int adevar(int na,int nb)
{
for (int p=0;p<nb;p++)
if (a[m-p-1]!=a[m-p-1-na-nb] || a[m-p-1]!=a[m-p-1-na-nb-nb])
return 0;
for (int i=0;i<na;i++)
if (a[m-nb-1]!=a[m-nb-na-nb-nb-1])
return 0;
return 1;
}
void aflare()
{
double lgb=0;
for (lgb=m/nb;lgb>0;lgb--)
{
if ((int)(m-lgb*nb)/na==(double)(m-lgb*nb)/na)
if (adevar((m-lgb*nb)/na,lgb))
{
for (int i=m-lgb-((m-lgb*nb)/na);i<m-lgb;i++)
fout<<a[i];
fout<<"\n";
for (int j=m-lgb;j<m;j++)
fout<<a[j];
fout<<"\n";
return;
}
}
fout<<"0\n";
}
int main ()
{
citire();
calcul();
aflare();
return 0;
}