Pagini recente » Cod sursa (job #1271031) | Cod sursa (job #613084) | Cod sursa (job #2072166) | Cod sursa (job #2783568) | Cod sursa (job #472316)
Cod sursa(job #472316)
#include<fstream>
using namespace std;
#define m 666013
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int a,b,c,x,y,z,T;
long long n,k;
long long ct[4][4],rez[4][4];
void prod(long long a[][4] , long long b[][4])
{ long long aux[4][4];
int i,j,t;
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) aux[i][j]=0;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(t=1;t<=3;t++)
aux[i][j]=( aux[i][j]%m + (b[t][j] * a[i][t])%m)%m;
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) rez[i][j]=aux[i][j];
}
long long pow(long long k)
{ if(k==1)
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) rez[i][j]=ct[i][j];
else
if(k%2)
{ pow(k-1);
prod(ct,rez);
}
else
{ pow(k/2);
prod(rez,rez);
}
}
int main()
{ f>>T;
for(int i=1;i<=T;i++)
{ f>>x>>y>>z>>a>>b>>c>>n;
ct[1][1]=ct[1][3]=ct[2][1]=ct[2][2]=0; ct[1][2]=ct[2][3]=1; ct[3][1]=c; ct[3][2]=b; ct[3][3]=a;
pow(n);
g<<((rez[1][1]*x)%m+(rez[1][2]*y)%m+(rez[1][3]*z)%m)%m<<'\n';
}
f.close();
g.close();
return 0;
}