Pagini recente » Cod sursa (job #321944) | Cod sursa (job #2790179) | Cod sursa (job #91043) | Cod sursa (job #1154010) | Cod sursa (job #2014910)
#include <bits/stdc++.h>
#define MOD 666013
#define ll long long
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int i,j,k;
ll T[4][4];
ll R[4][4];
ll aux[4][4];
void inm(ll A[4][4], ll B[4][4], ll C[4][4])
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{
C[i][j]=0;
for(k=1;k<=3;k++)
C[i][j]=(C[i][j]+(A[i][k]*B[k][j])%MOD)%MOD;
}
}
void at(ll A[4][4], ll B[4][4])
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
A[i][j]=B[i][j];
}
void put(ll A[4][4], ll n, ll C[4][4])
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
C[i][j]=0;
C[1][1]=C[2][2]=C[3][3]=1;
while(n)
{
if(n%2)
{
inm(C,A,aux);
at(C,aux);
}
n/=2;
inm(A,A,aux);
at(A,aux);
}
}
int main()
{
ll a,b,c,n,x,y,z,nrt;
f>>nrt;
for(;nrt;--nrt)
{
f>>x>>y>>z>>a>>b>>c>>n;
if(n<3)
switch(n)
{
case 0: {g<<x; break;}
case 1: {g<<y; break;}
case 2: {g<<z; break;}
}
else
{
T[2][1]=T[3][2]=1;
T[1][1]=a;
T[1][2]=b;
T[1][3]=c;
T[2][2]=T[2][3]=T[3][1]=T[3][3]=0;
put(T,n-2,R);
g<<((R[1][1]*z)%MOD+(R[1][2]*y)%MOD+(R[1][3]*x)%MOD)%MOD<<'\n';
}
}
return 0;
}