Pagini recente » Cod sursa (job #2560553) | Cod sursa (job #2635777) | Cod sursa (job #1416362) | Cod sursa (job #2555662) | Cod sursa (job #2910598)
#include <fstream>
#include <string>
#include <algorithm>
#define int long long
using namespace std;
ifstream cin ("lampa.in");
ofstream cout ("lampa.out");
int fib[] = {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987};
int n, m;
string s;
signed main()
{
cin >> n >> m >> s;
int coefa = fib[n - 3], coefb = fib[n - 2];
int frac = m / coefb;
int la = 0, lb = 0;
for (int i = 1; i <= frac; ++i)
{
if(!((m - coefb * i) % coefa))
{
int lunga = (m - coefb * i) / coefa;
bool ok = true;
for (int j = s.size() - 1; j >= s.size() - i; --j)
if (s[j] != s[j - i - lunga])
{
ok = false;
break;
}
if (ok)
{
la = lunga;
lb = i;
break;
}
}
}
string cuv1, cuv2;
for (int i = s.size() - 1; i >= s.size() - lb; --i)
cuv2 += s[i];
for (int i = s.size() - lb - 1; i >= s.size() - lb - la; --i)
cuv1 += s[i];
reverse(cuv1.begin(), cuv1.end());
reverse(cuv2.begin(), cuv2.end());
cout << cuv1 << '\n' << cuv2 << '\n';
return 0;
}