Cod sursa(job #2910598)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 22 iunie 2022 17:11:46
Problema Lampa Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#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;

}