Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2553938) | Cod sursa (job #667898) | Cod sursa (job #3319621)
#include <fstream>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int MOD=666013;
int t,a,b,c,i0,i1,i2,n;
int v[5][5];
void inmultire(int a[5][5], int b[5][5] )
{
int c[5][5]= {0};
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
for(int k=1; k<=3; k++)
{
c[i][j]=(c[i][j]+(a[i][k] * b[k][j])%MOD)%MOD;
}
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
a[i][j]=c[i][j];
}
void ridicare_putere(int n)
{
int p[5][5]= {0};
p[1][1]=1;
p[2][2]=1;
p[3][3]=1;
while(n)
{
if(n % 2 == 1)
{
inmultire(p, v);
}
inmultire(v,v);
n /= 2;
}
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
v[i][j]=p[i][j];
}
int main()
{
fin>>t;
for(int i=0; i<t; i++)
{
fin>>i0>>i1>>i2>>a>>b>>c>>n;
v[1][1]=0;
v[1][2]=1;
v[1][3]=0;
v[2][1]=0;
v[2][2]=0;
v[2][3]=1;
v[3][1]=c;
v[3][2]=b;
v[3][3]=a;
ridicare_putere(n);
fout<<((v[1][1]*i0%MOD+v[1][2]*i1%MOD)%MOD+v[1][3]*i2%MOD)%MOD<<'\n';
}
return 0;
}