Pagini recente » Cod sursa (job #1922902) | Cod sursa (job #1793328)
#include<stdio.h>
#define mod 666013
int m[3][3], m1[3][3], sol[3][3], v[3], x, y, z, a, b, c, n;
void atrib(int a[3][3], int b[3][3])
{ int i, j;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
a[i][j]=b[i][j];
}
void inm(int a[3][3], int b[3][3], int c[3][3])
{ int i, j, k;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{ c[i][j]=0;
for(k=0; k<3; k++)
c[i][j]=(((1ll*a[i][k]*b[k][j])%mod)+c[i][j])%mod;
}
}
void lgput (int m[3][3], int p)
{ int temp[3][3], i, j;
for(i=0; i<3; i++) for(j=0; j<3; j++) if(i==j) sol[i][j]=1; else sol[i][j]=0;
for(i=0; ((1<<i)<=p); i++)
{ if(((1<<i)&p)!=0)
{ inm(sol, m, temp);
atrib(sol, temp);
}
inm(m, m, temp);
atrib(m, temp);
}
}
void solve()
{ int rez=0;
lgput(m, n-2);
atrib(m, sol);
rez=((1ll*m[0][0]*v[0])%mod +
(1ll*m[0][1]*v[1])%mod +
(1ll*m[0][2]*v[2])%mod) %mod;
printf("%d\n", rez);
}
int main()
{ int t, i;
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d", &t);
for(i=0; i<t; i++)
{ scanf("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &n);
m[0][0]=a; m[0][1]=b; m[0][2]=c;
m[1][0]=1; m[1][1]=0; m[1][2]=0;
m[2][0]=0; m[2][1]=1; m[2][2]=0;
v[0]=z; v[1]=y; v[2]=x;
solve();
}
return 0;
}