Pagini recente » Cod sursa (job #1500866) | Cod sursa (job #2901879) | Cod sursa (job #1517883) | Cod sursa (job #1766748) | Cod sursa (job #1249992)
#include <stdio.h>
#define MOD 666013
int m[3][3], p[3][3];
inline void initializareM(){
int i, j;
for(i=0; i<3; i++){
for(j=0; j<i; j++){
m[i][j]=0;
}
m[i][i]=1;
for(j=i+1; j<3; j++){
m[i][j]=0;
}
}
}
inline void initializareP(){
p[0][0]=p[0][1]=p[1][1]=p[2][0]=0;
p[1][0]=p[2][1]=1;
}
inline void inmultire(int a[3][3], int b[3][3]){
int i, j, k, aux[3][3];
for(i=0; i<3; i++){
for(j=0; j<3; j++){
aux[i][j]=0;
for(k=0; k<3; k++){
aux[i][j]=(1LL*aux[i][j]+1LL*a[i][k]*b[k][j])%MOD;
}
}
}
for(i=0; i<3; i++){
for(j=0; j<3; j++){
a[i][j]=aux[i][j];
}
}
}
inline void lgput(int n){
initializareM();
initializareP();
while(n!=0){
if((n&1)==1){
inmultire(m, p);
}
inmultire(p, p);
n>>=1;
}
}
int main(){
int x, y, z, n, T, t;
FILE *fin, *fout;
fin=fopen("iepuri.in", "r");
fout=fopen("iepuri.out", "w");
fscanf(fin, "%d", &T);
for(t=0; t<T; t++){
fscanf(fin, "%d%d%d%d%d%d%d", &x, &y, &z, &p[2][2], &p[1][2], &p[0][2], &n);
lgput(n-2);
fprintf(fout, "%lld\n", (1LL*m[0][2]*x+1LL*m[1][2]*y+1LL*m[2][2]*z)%MOD);
}
fclose(fin);
fclose(fout);
return 0;
}