Cod sursa(job #2623466)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 3 iunie 2020 11:13:49
Problema Koba Scor 100
Compilator cpp-64 Status done
Runda simulare_oni_11-12... Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("koba.in");
ofstream fout("koba.out");

const int DIM = 1007;

int sum[DIM];
int pos[DIM];

int cod(int x, int y, int z)
{
    return x * 100 + y * 10 + z;
}

main()
{
    int n, t1, t2, t3;
    fin >> n >> t1 >> t2 >> t3;

    t1 %= 10;
    t2 %= 10;
    t3 %= 10;

    sum[1] = t1;
    sum[2] = t1 + t2;
    sum[3] = t1 + t2 + t3;

    if(n <= 3)
    {
        fout << sum[n] << '\n';
        return 0;
    }

    pos[cod(t1, t2, t3)] = 3;

    for(int i = 4; i <= n; ++i)
    {
        int t4 = (t3 + t2 * t1) % 10;
        t1 = t2;
        t2 = t3;
        t3 = t4;
        sum[i] = sum[i - 1] + t4;

        if(i == n)
        {
            fout << sum[i] << '\n';
            return 0;
        }

        int id = cod(t1, t2, t3);

        if(pos[id] == 0)
        {
            pos[id] = i;
        }
        else
        {
            int it = pos[id];
            int ans = sum[it] + (sum[i] - sum[it]) * ((n - it) / (i - it)) + (sum[it + ((n - it) % (i - it))] - sum[it]);

            fout << ans << '\n';
            return 0;
        }
    }

    fout << sum[n] << '\n';
}