Cod sursa(job #1292468)

Utilizator AndaionicaIonica Anda Maria Andaionica Data 14 decembrie 2014 13:22:01
Problema Koba Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
using namespace std;
ifstream f("koba.in");
ofstream g("koba.out");
int n,i,x,t1,t2,t3,a[10001],fr[10001],ok,p1,p2,p[10001],k,nr,y;
long long s1,s2,s,v[10001];
int main()
{
    f>>n;
    s=0;
    f>>x;
    t1=x%10;
    a[1]=t1;
    v[1]=t1;
    f>>x;
    t2=x%10;
    a[2]=t2;
    v[2]=t1+t2;
    f>>x;
    t3=x%10;
    a[3]=t3;
    s=t1+t2+t3;
    v[3]=s;
    ok=0;
    fr[t1*100+t2*10+t3]=1;
    p[t1]=1;
    p[t2]=2;
    p[t3]=3;
    k=3;
    for(i=4;i<=n&&ok==0;i++)
    {
        x=(t3+t1*t2)%10;
        y=x+a[i-1]*10+a[i-2]*100;
        if(fr[y]==0)
        {
            k++;
            a[k]=x;
            p[y]=i;
            fr[y]++;
            v[k]=s+x;
        }
            else
            {

                p2=i-3;
                p1=p[y]-2;
                s1=v[p2]-v[p1-1];
                s=v[p1-1];
                nr=p2-p1+1;
                ok=1;
                break;
            }
        t1=t2;
        t2=t3;
        t3=x;
        s=s+x;
    }
    if(ok==0)
      {
          g<<s;
          return 0;
      }
    int c=(n-p1+1)/nr;
    int r=(n-p1+1)%nr;
    s=s+(c)*s1;
    if(r!=0)
      s=s+v[p1+r-1]-v[p1-1];
    g<<s;
    return 0;
}