Pagini recente » Cod sursa (job #2758657) | Cod sursa (job #2979441) | Cod sursa (job #481942) | Cod sursa (job #241681) | Cod sursa (job #1236434)
#include<cstdio>
#include<algorithm>
using namespace std;
int St, Dr, T0, T1, A, B, X, Y, Z, M;
long long n;
pair < int, int > cur, cur1, cur2;
pair < int , int > Nxt (pair < int , int > ceva)
{
int pp, p;
pp = ceva.first;
p = ceva.second;
return make_pair( p, (A*pp*pp + B*p*p + X*pp + Y*p + Z) % M);
}
int brut (long long n)
{
if (n==0) return T0;
if (n==1) return T1;
int p = 1;
cur = make_pair (T0, T1);
while (1)
{
cur = Nxt (cur);
p++;
if (p==n) return cur.second;
}
}
int main()
{
freopen ("rsir.in", "r", stdin);
freopen ("rsir.out", "w", stdout);
scanf ("%d %d %d %d %d %d %d %d %lld", &T0, &T1, &A, &B, &X, &Y, &Z, &M, &n);
cur1 = make_pair(T0, T1);
cur2 = cur1;
St = 1;
while (1)
{
cur1 = Nxt ( cur1 );
St ++;
cur2 = Nxt ( cur2 );
cur2 = Nxt ( cur2 );
if (cur1 == cur2) break;
}
cur2 = Nxt(cur1);
Dr = St + 1;
while (1)
{
if (cur2 == cur1) break;
Dr ++;
cur2 = Nxt ( cur2 );
}
n = (n - St) % (Dr - St) + St;
printf ("%d\n", brut (n));
return 0;
}