Pagini recente » Cod sursa (job #338514) | Cod sursa (job #1724768) | Cod sursa (job #1008566) | Cod sursa (job #1660180) | Cod sursa (job #167964)
Cod sursa(job #167964)
#include <stdio.h>
#define LM 3027198
#include <string>
using namespace std;
int n, m;
char s[LM];
int i, j, k;
int f[30];
char s1[2000], s2[2000];
void FindSol();
int Verif();
int main()
{
freopen("lampa.in", "r", stdin);
freopen("lampa.out", "w", stdout);
scanf("%d %d", &n, &m);
scanf("%c", &s[0]);
for ( i = 0; i < m; i++ )
scanf("%c", &s[i]);
s[m] = '\0';
f[1] = f[2] = 1;
for ( i = 3; i <= n; i++ )
f[i] = f[i-1] + f[i-2];
FindSol();
printf("%s\n%s\n", s1, s2);
return 0;
}
void FindSol()
{
for ( i = 1; i <= m/f[n-2]; i++ )
{
j = (m - i*f[n-2])/f[n-1];
if ( i*f[n-2] + j*f[n-1] != m ) continue;
if ( n % 2 == 0 )
{
int h;
for ( h = 0; h < j; h++ )
s2[h] = s[h];
s2[j] = '\0';
for ( h = 0; h < i; h++ )
s1[h] = s[j+h];
s1[i] = '\0';
if ( Verif() )
return;
}
else
{
int h;
for ( h = 0; h < i; h++ )
s1[h] = s[h];
s1[i] = '\0';
for ( h = 0; h < j; h++ )
s2[h] = s[i+h];
s2[j] = '\0';
if ( Verif() )
return;
}
}
}
int Verif()
{
string v1 = s1, v2 = s2;
for ( int g = 3; g <= n; g++ )
{
string aux = v1+v2;
v1 = v2;
v2 = aux;
}
string v = s;
if ( v == v2 ) return 1;
return 0;
}