Pagini recente » Borderou de evaluare (job #3347961) | Borderou de evaluare (job #3339542) | Diferente pentru problema/map intre reviziile 18 si 9 | Cod sursa (job #3319210) | Cod sursa (job #3337701)
#include <fstream>
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
const int MOD=666013;
int copie[4][4],baza[4][4],rez[4][4];
void r(int exp, int baza[4][4], int rez[4][4])
{ for( int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
rez[i][j]=0;
for(int i=1;i<=3;i++)
rez[i][i]=1;
while(exp!=0)
{ if(exp%2==0)
{
exp/=2;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
{
copie[i][j]=0;
for(int k=1;k<=3;k++)
copie[i][j]+=(1LL*baza[i][k]*baza[k][j])%MOD;
}
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
baza[i][j]=copie[i][j];
}
else
{
exp--;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
{
copie[i][j]=0;
for(int k=1;k<=3;k++)
copie[i][j]+=(1LL*rez[i][k]*baza[k][j])%MOD;
}
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
rez[i][j]=copie[i][j];
}
}
}
int main()
{ int t,a,b,c,x,y,z,n;
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>x>>y>>z>>a>>b>>c>>n;
n-=2;
baza[1][1]=0; baza[1][2]=1;baza[1][3]=0;
baza[2][1]=0;baza[2][2]=0;baza[2][3]=1;
baza[3][1]=c;baza[3][2]=b;baza[3][3]=a;
r(n,baza,rez);
cout<<(1LL*rez[3][1]*x+1LL*rez[3][2]*y+1LL*rez[3][3]*z)%MOD<<'\n';
}
return 0;
}