Pagini recente » Borderou de evaluare (job #362244) | Borderou de evaluare (job #2091330) | Borderou de evaluare (job #2014570) | Borderou de evaluare (job #456427) | Cod sursa (job #1965339)
#include <bits/stdc++.h>
using namespace std;
ifstream f("lampa.in");
ofstream g("lampa.out");
int n,m;
int fibn,fibn1,fibn2;
string s;
void fibbo(int x1,int x2,int pc){
if(pc==n){
fibn=x2;
return;
}
if(pc==n-1)fibn1=x2;
if(pc==n-2)fibn2=x2;
fibbo(x2,x1+x2,pc+1);
}
bool ver(int na,int nb)
{
for(int p=0;p<nb;p++)
if(s[m-p-1]!=s[m-p-1-na-nb]||s[m-p-1]!=s[m-p-1-na-nb-nb]) return 0;
for(int i=0;i<na;i++)
if(s[m-nb-1]!=s[m-nb-na-nb-nb-1]) return 0;
return 1;
}
int main()
{
f>>n>>m;
f>>s;
fibbo(1,1,2);
int ok=1;
for(int length2=m/fibn2;ok,length2>=1;length2--){
int length1=(m-fibn1*length2)/fibn2;
if(length1*fibn2==m-fibn1*length2){
int i=1,j=m-length2-length1+1,k=1;
if(ver(length1,length2)){
ok=0;
if(n%2==0)for(int i=length2;i<length2+length1;i++,k++)g<<s[i];
else
for(int i=0;i<length1;i++)g<<s[i];
g<<"\n";
for(int i=m-length2;i<m;i++,k++)g<<s[i];
}
}
}
if(ok)g<<0;
return 0;
}