Pagini recente » Cod sursa (job #275913) | Cod sursa (job #1374515) | Cod sursa (job #1691511) | Cod sursa (job #686760) | Cod sursa (job #1373101)
#include <stdio.h>
#define MOD 666013
long a[3][3],sol[3][3],t,x,y,z,A,B,C;
void MX(long (*a)[3],long b[3][3])
{
int c[4][4];
for(int i = 0 ; i<3;i++)
for(int j = 0 ;j < 3 ;j++)
{
c[i][j] = 0;
for(int k = 0 ;k<3;k++)
c[i][j] = (c[i][j]+a[i][k]*b[k][j])%MOD;
}
for(int i = 0 ;i < 3 ;i++)
{
for(int j = 0 ;j<3;j++)
a[i][j] = c[i][j];
}
}
int main()
{
FILE * f = fopen("iepuri.in","r");
FILE * g = fopen("iepuri.out","w");
int k=0;
fscanf(f,"%d",&t);
long long nr = 0,n=0;
for(int i = 0 ;i<t;i++)
{
fscanf(f,"%d%d%d",&x,&y,&z);
fscanf(f,"%d%d%d%lld",&A,&B,&C,&n);
n=n%MOD;
for(int i=0;i<3;i++)
for(int j = 0 ;j<3;j++)
sol[i][j]=a[i][j]=0;
sol[0][0]=a[0][0]=x;sol[0][1]=a[0][1]=y;sol[0][2]=a[0][2]=z;
sol[1][0]=sol[2][1]=a[1][0]=a[2][1]=1;
n=n-1;
bool b;
for(int j = 0 ;(1<<j)<=n;j++)
{
b =(bool)(n&(1<<j));
if(b!=0)
MX(sol,a);
MX(a,a);
}
nr = (sol[2][0]*A+sol[2][1]*B+sol[2][2]*C)%MOD;
fprintf(g,"%lld\n",nr);
}
fclose(f);
fclose(g);
return 0;
}