Cod sursa(job #2979386)

Utilizator divadddDavid Curca divaddd Data 14 februarie 2023 23:43:48
Problema Koba Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#define VMAX 1002
using namespace std;
int n,a,b,c,vf[VMAX],sp[VMAX],len,st,t[VMAX];
int ans;

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

int main()
{
    fin >> n >> a >> b >> c;
    a %= 10; b %= 10; c %= 10;
    t[1] = a; vf[a] = 1;
    t[2] = b; vf[a*10+b] = 2;
    t[3] = c; vf[a*100+b*10+c] = 3;
    int cnt = 3;
    while(1){
        cnt++;
        int d = c+b*a;
        d %= 10;
        a = b;
        b = c;
        c = d;
        int pos = a*100+b*10+c;
        t[cnt] = c;
        if(vf[pos] != 0){
            len = (cnt-1)-vf[pos]+1;
            st = vf[pos];
            break;
        }
        vf[pos] = cnt;
    }
    for(int i = 1; i <= cnt; i++){
        sp[i] = sp[i-1]+t[i];
    }
    if(n <= st){
        fout << sp[n];
    }else{
        ans += sp[st-1];
        int sumper = sp[cnt-1]-sp[st-1];
        ans += ((n-(st-1))/len)*sumper;
        int rest = (n-(st-1))%len;
        for(int i = st; i <= st+rest-1; i++){
            ans += t[i];
        }
        fout << ans;
    }
    return 0;
}