Pagini recente » Cod sursa (job #2690741) | Cod sursa (job #1104763) | Cod sursa (job #821028) | Cod sursa (job #1838828) | Cod sursa (job #1521239)
#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] += (a[i][k]*a[k][j])%mod;
}
answer.a[i][j] = 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+(3-n%3)%3)/3+!!(n%3));
int cv= n%3;
if (!cv) cv = 3;
g<<(ans.a[cv-1][0]*x %mod + ans.a[cv-1][1]*y %mod + ans.a[cv-1][2]*z %mod)%mod<<'\n';
}
}