Cod sursa(job #1653039)

Utilizator CodrinsahCotarlan Codrin Codrinsah Data 15 martie 2016 18:13:42
Problema Rsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream fi ("rsir.in");
ofstream fo ("rsir.out");
int t[500000],posi,k,i,a,b,x,y,z,m,n,fr[1000][1000],pos[1000][1000];
int main()
{
    fi>>t[0]>>t[1]>>a>>b>>x>>y>>z>>m>>n;
    for (i=1;i<=min(50000000,n);i++)
    {
      if (i!=1) t[i]=a*t[i-2]+b*t[i-1]+x*t[i-2]+y*t[i-1]+z;
      t[i]=t[i]%m;
      fr[t[i-1]][t[i]]++;
      if (fr[t[i-1]][t[i]]==1) pos[t[i-1]][t[i]]=i;
      else {k=i-pos[t[i-1]][t[i]];posi=i-k;break;}
    }
//    for (i=0;i<=n;i++) fo<<t[i]<<' ';
    n=(n-posi+1);
    if (k==0) k=1;
    if (n%k!=0) n=n%k;
    for (i=posi;i<=n;i++)
    {
      if (i>1) t[i]=a*t[i-2]+b*t[i-1]+x*t[i-2]+y*t[i-1]+z;
      t[i]=t[i]%m;
    }
    fo<<t[n];
    return 0;
}