Pagini recente » Cod sursa (job #2802275) | Cod sursa (job #1537760) | Cod sursa (job #2847029) | Cod sursa (job #1410933) | Cod sursa (job #2568430)
#include<bits/stdc++.h>
#define cnt 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int zile, a[4][4], b[4][4], c[4][4], A, B, C, x, y, z, quiz;
void expo(int power)
{
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
if(i == j)
b[i][j] = 1;
else
b[i][j] = 0;
for(int p=0; (1<<p)<=power; p++)
{
if(((1<<p) & power) > 0)
{
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
{
c[i][j] = 0;
for(int k=1; k<=3; k++)
{
c[i][j] += (b[i][k] * a[k][j]) % cnt;
c[i][j] %= cnt;
}
}
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
b[i][j] = c[i][j];
}
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
{
c[i][j] = 0;
for(int k=1; k<=3; k++)
{
c[i][j] += (a[i][k] * a[k][j]) % cnt;
c[i][j] %= cnt;
}
}
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
a[i][j] = c[i][j] % cnt;
}
}
int main()
{
fin >> quiz;
for(int p=1; p<=quiz; p++)
{
fin >> x >> y >> z >> A >> B >> C >> zile;
a[1][1] = 0;
a[1][2] = 0;
a[1][3] = C;
a[2][1] = 1;
a[2][2] = 0;
a[2][3] = B;
a[3][1] = 0;
a[3][2] = 1;
a[3][3] = A;
expo(zile-2);
fout << ((x * b[1][3]) % cnt + (y * b[2][3]) % cnt + (z * b[3][3]) %cnt) % cnt;
fout << '\n';
}
fout.close();
return 0;
}