Pagini recente » Cod sursa (job #1005548) | Cod sursa (job #574606) | Cod sursa (job #1375906) | Cod sursa (job #788807) | Cod sursa (job #286210)
Cod sursa(job #286210)
#include <stdio.h>
#define f(w) for (int w=0;w<3;++w)
void mul(int a[3][3],int b[3][3])
{
int c[3][3];
f(i) f(j)
{
c[i][j] = 0;
f(k) c[i][j] = ((long long)c[i][j] + (long long)a[i][k]*(long long)b[k][j])%666013ll;
}
f(i) f(j) a[i][j] = c[i][j];
}
void solve()
{
int a,b,c,x,y,z,n;
scanf("%d%d%d%d%d%d%d", &x,&y,&z,&a,&b,&c,&n);
n -= 2;
int tmp[3][3], ret[3][3];
f(i) f(j) ret[i][j] = (i==j)?1:0, tmp[i][j] = 0;
tmp[0][0] = a;
tmp[0][1] = b;
tmp[0][2] = c;
tmp[1][0] = 1;
tmp[2][1] = 1;
while (n)
{
if (n&1) mul(ret,tmp);
mul(tmp,tmp);
n /= 2;
}
long long sol = 0;
sol = ((long long)sol+(long long)ret[0][0]*(long long)z)%666013ll;
sol = ((long long)sol+(long long)ret[0][1]*(long long)y)%666013ll;
sol = ((long long)sol+(long long)ret[0][2]*(long long)x)%666013ll;
printf("%lld\n", sol);
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
int t;
scanf("%d", &t);
while (t--)
solve();
return 0;
}