Cod sursa(job #2979507)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 15 februarie 2023 11:47:46
Problema Koba Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
using namespace std;
ifstream fin ("koba.in");
ofstream fout ("koba.out");
int n,tt1,tt2,s,nr,su,nrc,suma,tt3,t1,vv[1001],t2,t3,ii,i,poz,m,c[1001],v[1001];
int main()
{
    fin>>n>>tt1>>tt2>>tt3;
    tt1=tt1%10;
    tt2=tt2%10;
    tt3=tt3%10;
    t1=tt1;
    t2=tt2;
    t3=tt3;
    for (i=4; i<=1001; i++)
    {
        nr=t1*100+t2*10+t3;
        if (v[nr]!=0)
        {
            ii=i;
            poz=v[nr];
            break;
        }
        v[nr]=i;
        nrc=t3+t2*t1;
        t1=t2;
        t2=t3;
        t3=nrc%10;
    }
    t1=tt1;
    t2=tt2;
    t3=tt3;
    s=s+t1+t2+t3;
    c[1]=t1;
    c[2]=t2;
    c[3]=t3;
    for (i=4; i<poz; i++)
    {
        s=s+(t3+t2*t1)%10;
        nrc=(t3+t2*t1)%10;
        c[i]=c[i-1]+nrc;
        t1=t2;
        t2=t3;
        t3=nrc;
    }
    for (i=poz; i<ii; i++)
    {
        su=su+(t3+t2*t1)%10;
        nrc=(t3+t2*t1)%10;
        vv[i-poz+1]=vv[i-poz]+nrc;
        t1=t2;
        t2=t3;
        t3=nrc;
    }
    m=n-poz+1;
    if (m<0)
    {
        fout<<c[m];
        return 0;
    }
    suma=s+(su*(m/(ii-poz))+vv[m%(ii-poz)]);
    fout<<suma;
    return 0;
}