Pagini recente » Cod sursa (job #1135376) | Cod sursa (job #1404093) | Cod sursa (job #1714418) | Cod sursa (job #1721735) | Cod sursa (job #1521565)
#include <iostream>
#include <fstream>
using namespace std;
#define mod 666013
struct mat
{
int a[3][3];
mat operator*(const mat& other)
{
mat answer;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
answer.a[i][j] = 0;
for (int k = 0; k < 3; k++)
{
answer.a[i][j] += ((long long)a[i][k]*other.a[k][j])%mod;
}
answer.a[i][j] = (long long)answer.a[i][j]%mod;
}
}
return answer;
}
};
mat init;
mat f(int n)
{
if (n==1)
return init;
else
{
mat x = f(n/2);
x = x*x;
if (n%2 == 0)
return x;
else
return x*init;
}
}
int main()
{
int n, a, b, c, x, y, z;
int t;
ifstream ff("iepuri.in");
ofstream g("iepuri.out");
ff>>t;
while(t--)
{
ff>>x>>y>>z>>a>>b>>c>>n;
init.a[0][0] = 0;
init.a[0][1] = 1;
init.a[0][2] = 0;
init.a[1][0] = 0;
init.a[1][1] = 0;
init.a[1][2] = 1;
init.a[2][0] = c;
init.a[2][1] = b;
init.a[2][2] = a;
mat ans = f(n-2);
int cv = 3;
g<<((long long)ans.a[cv-1][0]*x%mod + (long long)ans.a[cv-1][1]*y %mod + (long long)ans.a[cv-1][2]*z %mod)%mod<<'\n';
}
}