Pagini recente » Cod sursa (job #1829894) | Cod sursa (job #869124) | Cod sursa (job #530039) | Cod sursa (job #1160831) | Cod sursa (job #1295163)
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
typedef long long i64;
const int mod= 666013;
int u[3][3], d[3][3];
void matmult( int f[3][3], int g[3][3] ) {
int final[3][3]= {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
for ( int i= 0; i<=2; ++i ) {
for ( int j= 0; j<=2; ++j ) {
for ( int k= 0; k<=2; ++k ) {
final[i][j]= ((i64)final[i][j]+(i64)f[i][k]*g[k][j])%mod;
}
}
}
for ( int i= 0; i<=2; ++i ) {
for ( int j= 0; j<=2; ++j ) {
f[i][j]= final[i][j];
}
}
}
void lgput( int p ) {
for ( int ok= 0; p>0; p/= 2 ) {
if ( p%2==1 ) {
if ( ok==1 ) matmult(d, u);
else {
for ( int i= 0; i<=2; ++i ) {
for ( int j= 0; j<=2; ++j ) {
d[i][j]= u[i][j];
}
}
}
ok= 1;
}
matmult(u, u);
}
}
int main( ) {
int t;
fin>>t;
for ( int cnt= 1; cnt<=t; ++cnt ) {
int x, y, z, a, b, c, n;
fin>>x>>y>>z>>a>>b>>c>>n;
for ( int i= 0; i<=2; ++i ) {
for ( int j= 0; j<=2; ++j ) {
d[i][j]= 1, u[i][j]= 0;
}
}
u[0][0]= a, u[1][0]= b, u[2][0]= c;
u[0][1]= u[1][2]= 1;
lgput(n-2);
int sol= ((i64)x*d[2][0]+(i64)y*d[1][0]+(i64)z*d[0][0])%mod;
fout<<sol<<"\n";
}
return 0;
}