Pagini recente » Cod sursa (job #1592056) | Cod sursa (job #2476918) | Cod sursa (job #2887069) | Cod sursa (job #2396095) | Cod sursa (job #157866)
Cod sursa(job #157866)
#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 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)
{
int ok=0;
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])
ok=1;
else
return 0;
for (int i=0;i<na;i++)
if (a[m-nb-1]==a[m-nb-na-nb-nb-1])
ok=1;
else
return 0;
return 1;
}
void aflare()
{
double lga=0,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;
}