Pagini recente » Cod sursa (job #1165473) | Cod sursa (job #2032127) | Cod sursa (job #2851781) | Cod sursa (job #3253178) | Cod sursa (job #856164)
Cod sursa(job #856164)
#include <stdio.h>
#define mod 666013
using namespace std;
void inmultire(long long int a[][3], long long int b[][3])
{
long long int i, j, k, c[3][3];
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
c[i][j]=0;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
for(k=0;k<=2;k++)
{
c[i][j]+=a[i][k]*b[k][j];
c[i][j]%=mod;
}
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
a[i][j]=c[i][j];
}
int main(){
long long int j, i, v[3][3], b[3][3], x, y, z, n, t, k;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%lld", &t);
for(;t>0;--t)
{
scanf("%lld%lld%lld", &x, &y, &z);
scanf("%lld%lld%lld%lld", &v[0][0], &v[0][1], &v[0][2], &n);
v[1][0] = 1; v[1][1] = 0; v[1][2] = 0;
v[2][0] = 0; v[2][1] = 1; v[2][2] = 0;
for(i=0;i<=2;i++)
for(k=0;k<=2;k++)
b[i][k]=v[i][k];
for(n-=3;n>0;n>>=1)
{
if(1&n)
inmultire(b, v);
inmultire(v, v);
}
printf("%lld", ((b[0][0]*z)%mod+(b[0][1]*y)%mod+(b[0][2]*x)%mod)%mod);
printf("%s", "\n");
}
return 0;
}