Pagini recente » Cod sursa (job #1973717) | Cod sursa (job #2793271) | Cod sursa (job #2965974) | Cod sursa (job #3252760) | Cod sursa (job #1255987)
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int mod=666013;
int p[3][3]={{0,0,0},{1,0,0},{0,1,0}};
int m[3][3] = {{1,0,0},{0,1,0},{0,0,1}};
void inmultire(int a[3][3], int b[3][3])
{
int aux[3][3];
for(int i = 0; i < 3; i++)
{
aux[i][0] = (1LL*a[i][0]*b[0][0]+1LL*a[i][1]*b[1][0] + 1LL*a[i][2]*b[2][0])%mod;
aux[i][1] = (1LL*a[i][0]*b[0][1]+1LL*a[i][1]*b[1][1] + 1LL*a[i][2]*b[2][1])%mod;
aux[i][2] = (1LL*a[i][0]*b[0][2]+1LL*a[i][1]*b[1][2] + 1LL*a[i][2]*b[2][2])%mod;
}
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
a[i][j] = aux[i][j];
}
}
}
void nriepuri(int n){
while(n!=0)
{
if((n&1)==1)
{
inmultire(m,p);
}
inmultire(p,p);
n >>= 1;
}
}
int main(){
int t,x,y,z,a,b,c,n;
in>>t;
while(t>0){
in>>x>>y>>z>>a>>b>>c>>n;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
m[i][j] = 0;
p[i][j] = 0;
}
m[i][i] = 1;
}
p[1][0] = 1;
p[2][1] = 1;
p[0][0]=a;
p[0][1]=b;
p[0][2]=c;
nriepuri(n-2);
out << (1LL*m[0][0]*z+1LL*m[0][1]*y+1LL*m[0][2]*x)%mod << "\n";
t--;
}
return 0;
}