Pagini recente » Cod sursa (job #753343) | Cod sursa (job #2055680) | Cod sursa (job #162847) | Cod sursa (job #1813831) | Cod sursa (job #131389)
Cod sursa(job #131389)
#include <fstream.h>
#define M 666013
int n, A, B, C, p0, p1, p2;
struct matr{
int a[3][3]; } p={0, 1, 0,
0, 0, 1,
0, 0, 0 }, I={1, 0, 0, 0, 1, 0, 0, 0, 1};
void prod (matr A, matr B, matr &C){
int i, j, k;
for(i=0; i<3; i++)
for(j=0; j<3; j++)
for(C.a[i][j]=k=0; k<3; k++)
C.a[i][j] = (C.a[i][j]+((long)A.a[i][k]*B.a[k][j])%M)%M;
}
matr pow(matr A, int n){
matr B, C;
if(n==0) return I;
if(n==1) return A;
B = pow(A, n/2);
prod(B, B, C);
if(n%2==0) return C;
else {prod(A, C, C); return C; }
}
int main(){
int T;
matr r;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
f>>T;
while(T--){
f>>p0>>p1>>p2>>A>>B>>C>>n;
p.a[2][0]=C; p.a[2][1]=B; p.a[2][2]=A;
r = pow(p, n-2);
g << (p0*r.a[2][0] + p1*r.a[2][1] + p2*r.a[2][2])%M << "\n";
}
f.close();
g.close();
return 0;
}