Pagini recente » Cod sursa (job #1246724) | Cod sursa (job #2986663) | Cod sursa (job #2875560) | Cod sursa (job #3130653) | Cod sursa (job #590025)
Cod sursa(job #590025)
#include <stdio.h>
#include <string.h>
#define mod 666013
FILE *f=fopen ("iepuri.in", "r");
FILE *g=fopen ("iepuri.out", "w");
int T,x,y,z,n,i,j,v[100];
long long A[4][4],B[4][4],sol;
void inmultire (long long A[4][4], long long B[4][4]) {
long long C[4][4];
int i,j,k;
memset (C, 0, sizeof(C));
for (k=1;k<=3;k++)
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
C[k][i]=( C[k][i]%mod + ((A[k][j]%mod)*(B[j][i]%mod))%mod )%mod;
memcpy (A, C, sizeof(C));
}
int main() {
fscanf (f, "%d", &T);
for ( ; T ; T--)
{
memset (A, 0, sizeof(A));
fscanf (f, "%lld%lld%lld%d%d%d%d", &A[1][1],&A[1][2],&A[1][3],&x,&y,&z,&n);
A[2][1]=1; A[3][2]=1; memcpy (B, A, sizeof(A)); i=0; n-=2;
while (n)
{
v[++i]=n%2;
n/=2;
}
for (j=i-1;j>=1;j--)
{
inmultire (A, A);
if (v[j])
inmultire (A, B);
}
sol= (A[1][1]*x)%mod + (A[1][2]*y)%mod + (A[1][3]*z)%mod;
fprintf (g, "%lld\n", sol%mod);
}
return 0;
}