Pagini recente » Cod sursa (job #1288125) | Cod sursa (job #663020) | Cod sursa (job #2091947) | Cod sursa (job #1678726) | Cod sursa (job #2734918)
#include <fstream>
#include <string>
using namespace std;
ifstream f("lampa.in");
ofstream g("lampa.out");
int m,n,mat[2][30];
string s,aux,a,b;
int solve(int nr0,int nr1)
{
a.clear();
b.clear();
int p0=0,p1=0;
if(n%2==0)p0=nr1;
else p1=nr0;
a=s.substr(p0,nr0);
b=s.substr(p1,nr1);
int p=0;
for(int poz=0; poz<aux.length(); poz++)
{
if(aux[poz]=='0')
{
if(s.compare(p,nr0,a,0,nr0)!=0)return 0;
p+=nr0;
}
else
{
if(s.compare(p,nr1,b,0,nr1)!=0)return 0;
p+=nr1;
}
}
return 1;
}
int main()
{
f>>n>>m>>s;
mat[0][1]=mat[1][2]=1;
for(int i=3; i<=n; i++)
{
mat[0][i]=mat[0][i-1]+mat[0][i-2];
mat[1][i]=mat[1][i-1]+mat[1][i-2];
}
a='0';
b='1';
for(int i=3; i<=n; i++)
{
aux=a+b;
a=b;
b=aux;
}
for(int lg2=m/mat[1][n]; lg2>=1; lg2--)
{
int lg1=(m-lg2*mat[1][n])/mat[0][n];
if(mat[1][n]*lg2+mat[0][n]*lg1==m && solve(lg1,lg2)==1)
{
g<<a<<"\n"<<b<<"\n";
return 0;
}
}
g<<"0\n";
return 0;
}