Cod sursa(job #1688571)

Utilizator akaprosAna Kapros akapros Data 13 aprilie 2016 16:25:32
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define maxN 10002
#define maxD 11
using namespace std;
using namespace std;
int w[maxD][maxD][maxD], sp[maxN], ans;
int n, t1, t2, t3;
void read()
{
    freopen("koba.in", "r", stdin);
    scanf("%d %d %d %d", &n, &t1, &t2, &t3);
    t1 %= 10; t2 %= 10; t3 %= 10;
}
void solve()
{
    int i, p = 0, q = 0;
    sp[1] = t1;
    sp[2] = t1 + t2;
    for (i = 3; i <= n; ++ i)
        if (!w[t1][t2][t3])
    {
        int cp = t3;
        w[t1][t2][t3] = i;
        sp[i] = sp[i - 1] + t3;
        t3 = (t3 + t1 * t2) % 10;
        t1 = t2;
        t2 = cp;
    }else
    {
        sp[i] = sp[i - 1] + t3;
        p = i - w[t1][t2][t3];
        q = w[t1][t2][t3];
        //w[t1][t2][t3] = i;
        break;
    }
    if (!p)
    ans = sp[n];
    else
        ans = sp[q] + (sp[p + q] - sp[q]) * ((n - q) / p) + sp[q + (n - q) % p] - sp[q];
}
void write()
{
    freopen("koba.out", "w", stdout);
    printf("%d\n", ans);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}