Pagini recente » template/preoni-2006 | Clasament simulare_de_oni_1 | Cod sursa (job #1033054) | Arhiva de probleme | Cod sursa (job #357831)
Cod sursa(job #357831)
#include<stdio.h>
#define MOD 666013
#define ll long long
int r[4][4],m[4][4],t,x,y,z,a,b,c,n;
int nrbit (int x )
{
int nr=0;
while(x)
{
nr++;
x=x/2;
}
return nr;
}
void inm (int a[4][4],int b[4][4]) // a = a * b
{
int i, j, k, s = 0, c[4][4];
for (i = 1; i <= 3; i++)
for (j = 1; j <= 3; ++j)
{
s = 0;
for (k = 1; k <= 3; ++k)
s = ((ll)s + (ll)a[i][k] * b[k][j]) % MOD;
c[i][j] = s;
}
for (i = 1; i <= 3; i++)
for (j = 1; j <= 3; j++)
a[i][j] = c[i][j];
}
void inmul (int k,int nr)
{
int i,j;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
r[i][j] = (i == j);
for( i=nr-1;i>=0;i--)
{
inm(r,r);
if(k&(1<<i))
inm(r, m);
}
}
int main ()
{
int i, k, nr, s2;
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
m[1][1]=0;m[1][2]=1;m[1][3]=0;
m[2][1]=0;m[2][2]=0;m[2][3]=1;
m[3][1]=c;m[3][2]=b;m[3][3]=a;
k=n-2;
nr=nrbit(k);
inmul(k,nr);
s2=((ll)x*r[3][1])%MOD+((ll)y*r[3][2])%MOD+((ll)z*r[3][3])%MOD;
printf("%d\n",s2%MOD);
}
return 0;
}