Pagini recente » Cod sursa (job #2738297) | Cod sursa (job #3219308) | Monitorul de evaluare | Cod sursa (job #3279567) | Cod sursa (job #1387737)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int mod=666013;
int p[4][4];
void functie(int a[][4],int exp)
{
int aux[4][4],i,j,k;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
p[i][j]=0;
for(i=1;i<=3;i++)
p[i][i]=1;
while(exp)
{
if(exp&1)
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
aux[i][j]=0;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
aux[i][j]+=(1LL*p[i][k]*a[k][j])%mod;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
p[i][j]=aux[i][j]%mod;
}
exp>>=1;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
aux[i][j]=0;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
aux[i][j]+=(1LL*a[i][k]*a[k][j])%mod;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
a[i][j]=aux[i][j]%mod;
}
}
int main()
{
int t,x,y,z,a,b,c,n,i;
in>>t;
for(i=1;i<=t;i++)
{
in>>x>>y>>z>>a>>b>>c>>n;
int m[4][4];
memset(m,0,sizeof(m));
m[2][1]=1;
m[3][2]=1;
m[1][3]=c;
m[2][3]=b;
m[3][3]=a;
if(n-2<=0)
{
if(n==0) out<<x;
else if(n==1) out<<y;
else if(n==2) out<<z;
out<<'\n';
}
else
{
functie(m,n-2);
out<<(1LL*x*p[1][3]+1LL*y*p[2][3]+1LL*z*p[3][3])%mod<<'\n';
}
}
in.close();
out.close();
return 0;
}