Pagini recente » Cod sursa (job #1490138) | Cod sursa (job #1796951) | Cod sursa (job #1930677) | Cod sursa (job #200783) | Cod sursa (job #3252953)
#include <bits/stdc++.h>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int MOD=666013;
int x, y, z, a, b, c, n;
int ans[4][4];
void inmultire(int m[4][4], int m2[4][4])
{
int aux[4][4]={0};
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
for(int k=1; k<=3; k++)
{
aux[i][j]+=(m[i][k]*m2[k][j])%MOD;
}
}
}
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
ans[i][j]=aux[i][j];
}
}
}
void exp_rapida(int x, int mat[4][4])
{
int cx=x;
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
ans[i][j]=mat[i][j];
}
}
while(x>1)
{
inmultire(ans, ans);
x/=2;
}
if(cx%2)
{
inmultire(ans, mat);
}
}
void solve_test()
{
in>>x>>y>>z>>a>>b>>c>>n;
int mat[4][4]=
{
{0},
{0, 0, 1, 0},
{0, 0, 0, 1},
{0, c, b, a}
};
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
ans[i][j]=mat[i][j];
}
}
if(n==3)
{
out<<a*z%MOD+b*y%MOD+c*x%MOD<<'\n';
return;
}
exp_rapida(n-2, mat);
out<<ans[3][1]*x+ans[3][2]*y+ans[3][3]*z<<'\n';
}
int main()
{
int t;
in>>t;
while(t--)
{
solve_test();
}
return 0;
}