Pagini recente » Cod sursa (job #620056) | Cod sursa (job #3286845) | Cod sursa (job #5488) | Cod sursa (job #2561146) | Cod sursa (job #1653039)
#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;
}