Pagini recente » Cod sursa (job #2287758) | Cod sursa (job #2911963) | Cod sursa (job #3033015) | Cod sursa (job #1478313) | Cod sursa (job #577348)
Cod sursa(job #577348)
#include<stdio.h>
FILE *f=fopen("iepuri.in","r");
FILE *g=fopen("iepuri.out","w");
#define mod 666013
using namespace std;
long T, X, Y, Z, A, B, C, N;
long s;
long AA[4][4], AN[4][4], I[4], aux[4][4];
void m(long A1[4][4], long A2[4][4])
{
int i,j,k;
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
{
s = 0;
for(k=1; k<=3; k++)
s += (A1[i][k]*A2[k][j])%mod, s %= mod;
aux[i][j] = s;
}
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
A1[i][j] = aux[i][j];
}
void putere(int n)
{
if( n<=1 ) return;
putere( n/2 );
m(AN, AN);
if( n&1 ) m(AN, AA);
}
void solve()
{
int i,j,k;
AA[2][1] = 1; AA[3][2] = 1;
fscanf(f,"%ld",&T);
for(k=1;k<=T;++k)
{
fscanf(f,"%ld%ld%ld%ld%ld%ld%ld",&X,&Y,&Z,&A,&B,&C,&N);
AA[1][1] = A;
AA[1][2] = B;
AA[1][3] = C;
I[3] = X;
I[2] = Y;
I[1] = Z;
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
AN[i][j] = AA[i][j];
N=N-2;
putere(N);
s = 0;
for(i=1; i<=3; i++)
s += ( AN[1][i]*I[i] ) % mod , s %= mod;
fprintf(g,"%ld\n",s);
}
}
int main()
{
solve();
fclose(f);
fclose(g);
return 0;
}