Pagini recente » Cod sursa (job #792134) | Cod sursa (job #2017925) | Cod sursa (job #1372343) | Cod sursa (job #2954857) | Cod sursa (job #1832045)
#include <stdio.h>
#define mod 666013
#define lim 3
int baza[lim][lim],rez[lim][lim],cop[lim][lim];
void produs(int a[lim][lim],int b[lim][lim],int c[lim][lim]){
int i,j,k;
for(i=0;i<lim;i++)
for(j=0;j<lim;j++) {
c[i][j]=0;
for(k=0;k<lim;k++)
c[i][j]=(c[i][j]+1LL*a[i][k]*b[k][j])%mod;
}
}
void copiere(int a[lim][lim],int b[lim][lim]){
int i,j;
for(i=0;i<lim;i++)
for(j=0;j<lim;j++)
b[i][j]=a[i][j];
}
void putlog(int exp){
while(exp!=0){
if(exp%2==1){
produs(rez,baza,cop);
copiere(cop,rez);
}
produs(baza,baza,cop);
copiere(cop,baza);
exp/=2;
}
}
int main(){
FILE *fin,*fout;
fin=fopen("iepuri.in","r");
fout=fopen("iepuri.out","w");
int i,n,t,a,b,c,x,y,z;
fscanf(fin,"%d",&t);
for(i=1;i<=t;i++){
fscanf(fin,"%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
baza[0][0]=0; baza[0][1]=0; baza[0][2]=c;
baza[1][0]=1; baza[1][1]=0; baza[1][2]=b;
baza[2][0]=0; baza[2][1]=1; baza[2][2]=a;
rez[0][0]=x; rez[0][1]=y; rez[0][2]=z;
rez[1][0]=0; rez[1][1]=0; rez[1][2]=0;
rez[2][0]=0; rez[2][1]=0; rez[2][2]=0;
putlog(n-2);
fprintf(fout,"%d\n",rez[0][2]);
}
fclose(fin);
fclose(fout);
return 0;
}