Pagini recente » Cod sursa (job #1924845) | Cod sursa (job #491392) | Cod sursa (job #355076) | Cod sursa (job #2842302) | Cod sursa (job #1122725)
#include<stdio.h>
#include<string.h>
#define MOD 666013
int m[3][3];
void inmultire(int a[3][3], int b[3][3], int c[3][3])
{
int aux[3][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
aux[i][j]=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
int cont;
for(cont=0;cont<3;cont++)
aux[i][j]+=(1LL*a[i][cont]*b[cont][j])%MOD;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=aux[i][j];
}
void expon(int A[3][3],int putere)
{
int ans[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
ans[i][j]=0;
ans[0][0]=ans[1][1]=ans[2][2]=1;
while(putere!=0)
{
if(putere%2==1)
inmultire(ans,A,ans);
inmultire(A,A,A);
putere/=2;
}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
A[i][j]=ans[i][j];
}
int main()
{
FILE *fin,*fout;
fin=fopen("iepuri.in","r");
fout=fopen("iepuri.out","w");
int t;
fscanf(fin,"%d",&t);
while(t)
{
int a,b,c,x,y,z,n;
fscanf(fin,"%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
m[0][0]=m[0][1]=m[2][0]=m[1][1]=0;
m[1][0]=m[2][1]=1;
m[0][2]=c;
m[1][2]=b;
m[2][2]=a;
expon(m,n-2);
fprintf(fout,"%lld\n",(1LL*m[0][2]*x+1LL*m[1][2]*y+1LL*z*m[2][2])%MOD);
t--;
}
return 0;
}