Pagini recente » Monitorul de evaluare | Diferente pentru runda/redsnow_3/clasament intre reviziile 4 si 1 | Istoria paginii utilizator/mxrtinaxpaul | Istoria paginii runda/problemiada_2 | Cod sursa (job #804532)
Cod sursa(job #804532)
#include <stdio.h>
#define mod 666013
using namespace std;
FILE *f=fopen("iepuri.in","r"), *g=fopen("iepuri.out","w");
void inmultire(int a[][3], int b[][3])
{
long long int q,w,e,r,t,y,u,i,o;
q=(a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0])%mod;
w=(a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1])%mod;
e=(a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2])%mod;
r=(a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0])%mod;
t=(a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1])%mod;
y=(a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2])%mod;
u=(a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0])%mod;
i=(a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1])%mod;
o=(a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2])%mod;
a[0][0]=q;
a[0][1]=w;
a[0][2]=e;
a[1][0]=r;
a[1][1]=t;
a[1][2]=y;
a[2][0]=u;
a[2][1]=i;
a[2][2]=o;
}
int main()
{
int j, i, v[3][3], b[3][3], x, y, z, n, t;
fscanf(f,"%d", &t);
for(j=1;j<=t;j++)
{
fscanf(f,"%d%d%d", &x, &y, &z);
fscanf(f,"%d%d%d%d", &v[0][0], &v[0][1], &v[0][2], &n);
b[0][0]=v[0][0];
b[0][1]=v[0][1];
b[0][2]=v[0][2];
v[1][0]=b[1][0]=1;
v[1][1]=b[1][1]=0;
v[1][2]=b[1][2]=0;
v[2][0]=b[2][0]=0;
v[2][1]=b[2][1]=1;
v[2][2]=b[2][2]=0;
n-=3;
for(i=0;(1<<i)<=n;i++)
{
if((1<<i)&n)
inmultire(b, v);
inmultire(v, v);
}
fprintf(g, "%d", (b[0][0]*z+b[0][1]*y+b[0][2]*x)%mod);
fprintf(g, "%s", "\n");
}
return 0;
}