Cod sursa(job #647621)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 11 decembrie 2011 17:31:02
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#define N 666013
#define lul unsigned long long
lul e[3][3],d[3][3];
int a,b,c,x,y,z,t,n;

void mul(lul a[3][3],lul b[3][3],lul c[3][3])
{int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
      {a[i][j]=0;
      for(k=0;k<3;k++)
             a[i][j]=((a[i][j]%N)+(((b[i][k]%N)*(c[k][j]%N))%N))%N;}}

int main()
{freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
while(t--)
       {scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
       d[0][0]=d[0][2]=0,d[0][1]=1;
       d[1][0]=d[1][1]=0,d[1][2]=1;
       d[2][0]=c,d[2][1]=b,d[2][2]=a,n-=2;
       while(n)
               {if(n%2)
                      mul(e,d,e);
               n>>=1;
               mul(d,d,d);}
       printf("%d\n",((((e[2][0]%N)*(x%N))%N)+(((e[2][1]%N)*(y%N))%N)+(((e[2][2]%N)*(z%N))%N))%N);}
return 0;}