Cod sursa(job #3366964)

Utilizator victormedianvictor median victormedian Data 5 octombrie 2026 15:16:31
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
using namespace std;

ifstream cin("iepuri.in");
ofstream cout("iepuri.out");

const int MOD=666013;

int x[4][4],baza[4][4],rez[4][4];

void exp_rapida(int exp, int baza[4][4], int rez[4][4])
{
int i,j,k;
while(exp!=0)
{
if(exp%2==0)
{
exp/=2;
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
{
x[i][j]=0;
for(k=1; k<=3; k++)
x[i][j]+=(1LL*baza[i][k]*baza[k][j])%MOD;
}
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
baza[i][j]=x[i][j];
}
exp--;
for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
{
x[i][j]=0;
for(k=1; k<=3; k++)
x[i][j]+=(1LL*rez[i][k]*baza[k][j])%MOD;
}

for(i=1; i<=3; i++)
for(j=1; j<=3; j++)
rez[i][j]=x[i][j];
}

}
int main()
{
int t, i, a, b, c, x, y, z, n;
cin>>t;
for(i=1; i<=t; i++)
{
cin>>x>>y>>z>>a>>b>>c>>n;
n-=2;
baza[1][1]=0;
baza[1][3]=0;
baza[2][1]=0;
baza[2][2]=0;
baza[1][2]=1;
baza[2][3]=1;
baza[3][1]=c;
baza[3][2]=b;
baza[3][3]=a;
int j, j1;
for(j=1; j<=3; j++)
for(j1=1; j1<=3; j1++)
rez[j][j1]=0;
for(j=1; j<=3; j++)
rez[j][j]=1;
exp_rapida(n,baza,rez);
cout<<(1LL*rez[3][1]*x+1LL*rez[3][2]*y+1LL*rez[3][3]*z)%MOD<<endl;
}
return 0;
}