Pagini recente » Cod sursa (job #3368450) | Cod sursa (job #3365566) | Cod sursa (job #3368457) | Cod sursa (job #3368454) | Cod sursa (job #3368718)
#include <iostream>
#include <fstream>
const int mod=666013;
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
void multiply(int a[3][3],int b[3][3],int c[3][3])
{
int temp[3][3]={0};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
for(int k=0;k<3;k++)
{
long long prod=(long long)a[i][k]*b[k][j];
temp[i][j]=(temp[i][j]+prod)%mod;
}
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
c[i][j]=temp[i][j];
}
void power(int m[3][3],long long p,int res[3][3])
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(i==j) res[i][j]=1;
else res[i][j]=0;
int base[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
base[i][j]=m[i][j];
while(p>0)
{
if(p%2==1)
multiply(res,base,res);
multiply(base,base,base);
p/=2;
}
}
int t,x,y,z,a,b,c,n;
long long ans;
int main()
{
f>>t;
while(t--)
{
f>>x>>y>>z>>a>>b>>c>>n;
ans=0;
int m[3][3]={
{a,b,c},
{1,0,0},
{0,1,0}
};
int mpow[3][3];
power(m,n-2,mpow);
ans=(ans+(long long)mpow[0][0]*(z%mod))%mod;
ans=(ans+(long long)mpow[0][1]*(y%mod))%mod;
ans=(ans+(long long)mpow[0][2]*(x%mod))%mod;
g<<ans<<'\n';
}
return 0;
}