Cod sursa(job #1254440)

Utilizator TibixbAndrei Tiberiu Tibixb Data 2 noiembrie 2014 18:59:11
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream>
using namespace std;
int n, v[1000], i, ok, p, u, s, sc, k, j;
pair<int, int> m[13][13][13];
ifstream in("koba.in");
ofstream out("koba.out");
int main(){
    in>>n;
    in>>v[1]>>v[2]>>v[3];
    v[1]%=10;
    v[2]%=10;
    v[3]%=10;
    k=3;
    //m[v[1]][v[2]][v[3]].first++;
    //m[v[1]][v[2]][v[3]].second=1;
    for(i=4; ok!=1 && i<=n; i++){
        v[++k]=(v[i-1]+v[i-2]*v[i-3])%10;
        m[v[k-1]][v[k-2]][v[k-3]].first++;
        if(m[v[k-1]][v[k-2]][v[k-3]].first==1)
            m[v[k-1]][v[k-2]][v[k-3]].second=k-3;
        else{
            ok=1;
            p=m[v[k-1]][v[k-2]][v[k-3]].second;
            u=i-4;
        }
    }
    if(ok==0){
        for(i=1; i<=n; i++)
            s+=v[i];
        out<<s;
    }
    else{
        //out<<p<<" "<<u<<"\n";
        for(i=1; i<p; i++)
            s+=v[i];
        for(i=p; i<=u; i++)
            sc+=v[i];
        n-=(p-1);
        s+=(n/(u-p+1))*sc;
        for(i=p, j=1; j<=n%(u-p+1); i++, j++)
            s+=v[i];
        out<<s;
    }
return 0;
}