Pagini recente » Cod sursa (job #569875) | Cod sursa (job #3250300) | Cod sursa (job #3156412) | Cod sursa (job #647870) | Cod sursa (job #2830884)
#include <fstream>
#include <iostream>
#include <algorithm>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int NMAX=3;
int v[NMAX][NMAX];
int copie[NMAX][NMAX];
int puteri[NMAX][NMAX];
int sum[NMAX][NMAX];
void solve(int copie[NMAX][NMAX],int v[NMAX][NMAX],int sum[NMAX][NMAX])
{
int i,j,k,n;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
sum[i][j]=0;
for(k=0;k<3;k++)
sum[i][j]=((sum[i][j]%MOD)+1LL*copie[i][k]*v[k][j])%MOD;
}
}
void schimb(int copie[NMAX][NMAX],int v[NMAX][NMAX])
{
int i,j;
for(i=0;i<3;i++)
for (j=0;j<3;j++)
copie[i][j]=v[i][j];
}
void power(int n)
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
puteri[i][j]=0;
puteri[0][0]=1;
puteri[1][1]=1;
puteri[2][2]=1;
while(n)
{
if (n%2==1)
{
solve(puteri,copie,v);
schimb(puteri,v);
}
n=n/2;
solve(copie,copie,v);
schimb(copie,v);
}
}
void cleart(int copie[NMAX][NMAX])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
copie[i][j]=0;
copie[1][0]=1;
copie[2][1]=1;
}
int main()
{
int t,s,x,y,z,a,b,c,i,j,n;
long long s1,s2,s3;
fin>>t;
for(i=1;i<=t;i++)
{
fin>>x>>y>>z>>a>>b>>c>>n;
cleart(copie);
copie[2][2]=a;
copie[1][2]=b;
copie[0][2]=c;
power(n-2);
s1=1LL*x*puteri[0][2];
s2=1LL*y*puteri[1][2];
s3=1LL*z*puteri[2][2];
s=(s1+s2+s3)%MOD;
fout <<s<<"\n";
}
return 0;
}