Pagini recente » Cod sursa (job #2380899) | Cod sursa (job #1020154) | Cod sursa (job #2714103) | Cod sursa (job #3245315) | Cod sursa (job #2443796)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rsir.in");
ofstream out("rsir.out");
const int dim = 7005;
int t0,t1,a,b,x,y,z,mod,p[dim],s[dim];
long long int n;
pair <int ,int > testoasa,iepure;
pair<int,int> next(pair<int , int> x)
{
pair<int,int> a;
a.first = x.second;
a.second = p[x.first] + s[x.second];
if (a.second >= mod)
{
a.second -= mod;
}
return a;
}
int main()
{
in >> t0 >> t1 >> a >> b >> x >> y >> z >> mod >> n;
t0 %= mod;
t1 %= mod;
a %= mod;
b %= mod;
x %= mod;
y %= mod;
z %= mod;
long long int acum;
for (int i=0; i<mod; i++)
{
acum = 1LL*x*i;
acum += 1LL*a*i*i;
acum += z;
acum %= mod;
p[i] = acum;
acum = 1LL*y*i;
acum += 1LL*b*i*i;
acum %= mod;
s[i] = acum;
}
pair<int,int> start;
start = make_pair(t0,t1);
testoasa = start;
iepure = next(start);
while (testoasa != iepure)
{
testoasa = next(testoasa);
iepure = next(next(iepure));
}
int len = 1;
iepure = next(iepure);
while (iepure != testoasa)
{
iepure = next(iepure);
len++;
}
iepure = start;
testoasa = start;
for (int i=1; i<=len; i++)
{
iepure = next(iepure);
}
int poz = 0;
while (iepure != testoasa)
{
iepure = next(iepure);
testoasa = next(testoasa);
poz++;
}
int st = (n-poz)%len;
if (st == 0) st = len;
for (int i=1; i<=st; i++)
{
iepure = next(iepure);
}
out << iepure.first;
return 0;
}