Pagini recente » Cod sursa (job #28751) | Cod sursa (job #1041307) | Cod sursa (job #385529) | Cod sursa (job #2841443) | Cod sursa (job #3030056)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
int v[3];
const int MOD=666013;
void inmultire(long long x[3][3], long long y[3][3], long long z[3][3])
{
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
z[i][j]=0;
for(int k=0; k<3; k++)
{
z[i][j]=(z[i][j]+(x[i][k]*y[k][j])%MOD)%MOD;
}
}
}
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
x[i][j]=z[i][j];
}
}
int main()
{
int t;
int a,b,d,n;
in>>t;
long long mat[3][3], ans[3][3], c[3][3];
for(int i=1; i<=t; i++)
{
in>>v[2]>>v[1]>>v[0]>>a>>b>>d>>n;
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
mat[i][j]=0;
mat[0][0]=a;
mat[0][1]=b;
mat[0][2]=d;
mat[1][0]=1;
mat[2][1]=1;
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
ans[i][j]=0;
ans[0][0]=ans[1][1]=ans[2][2]=1;
n=n-2;
while(n)
{
if(n%2==1)
{
inmultire(ans,mat,c);
}
inmultire(mat,mat,c);
n=n/2;
}
long long rez=(ans[0][0]*v[0]%MOD+ans[0][1]*v[1]%MOD+ans[0][2]*v[2]%MOD)%MOD;
out<<rez<<'\n';
}
return 0;
}