Pagini recente » Cod sursa (job #566847) | Cod sursa (job #618210) | Cod sursa (job #1626650) | Cod sursa (job #212524) | Cod sursa (job #2066224)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int mod=666013;
int a,b,c,x,y,z;
void inmm(int m[][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]+=1LL*m[i][k]*m[k][j]%mod;
}
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
m[i][j]=z[i][j]%mod;
}
void inmp(int p[][3], int m[][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]+=1LL*p[i][k]*m[k][j]%mod;
}
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
p[i][j]=z[i][j]%mod;
}
int powmat(int k)
{
int p[3][3]= {{1,0,0},{0,1,0},{0,0,1}};
int m[3][3]= {{a,1,0},{b,0,1},{c,0,0}};
while(k>0)
{
if(k%2==0)
{
inmm(m);
k/=2;
}
else
{
inmp(p,m);
k--;
}
}
return (z*p[0][0]+y*p[1][0]+x*p[2][0])%mod;
}
int main()
{
int n,T;
f>>T;
while(T--)
{
f>>x>>y>>z>>a>>b>>c>>n;
g<<powmat(n-2)<<'\n';
}
return 0;
}