Pagini recente » Cod sursa (job #1487458) | Cod sursa (job #1643188) | Cod sursa (job #2678292) | Cod sursa (job #2817916) | Cod sursa (job #560288)
Cod sursa(job #560288)
#include<cstdio>
#include<fstream>
using namespace std;
#define mod 666013
long long M[3][3],I[3],M_N[3][3],AA[3][3];
void inmulteste()
{
int i,j,k;
long long s;
for(i=0;i<3;++i)
for(j=0;j<3;++j)
{
s=0;
for(k=0;k<3;++k)
{s+=AA[i][k]*AA[k][j]; s%=mod;}
M_N[i][j]=s;
}
for(i=0;i<3;++i)
for(j=0;j<3;++j)
AA[i][j]=M_N[i][j];
}
void inmulteste2()
{
int i,j,k;
long long s;
for(i=0;i<3;++i)
for(j=0;j<3;++j)
{
s=0;
for(k=0;k<3;++k)
{s+=AA[i][k]*M[k][j]; s%=mod;}
M_N[i][j]=s;
}
for(i=0;i<3;++i)
for(j=0;j<3;++j)
AA[i][j]=M_N[i][j];
}
void fct(int p)
{
if(p<=1)
return ;
fct(p/2);
inmulteste();
if(p&1)
inmulteste2();
}
int main()
{
int N,X,Y,Z,A,B,C,T;
int i,j,k;
long long sol;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
in>>T;
M[0][1]=1, M[1][2]=1;
for(k=1;k<=T;++k)
{
in>>X>>Y>>Z>>A>>B>>C>>N;
M[2][0]=C; M[2][1]=B; M[2][2]=A;
I[0]=X; I[1]=Y; I[2]=Z;
N-=2;
for(i=0;i<3;++i)
for(j=0;j<3;++j)
AA[i][j]=M[i][j];
fct(N);
sol=0;
for(i=0;i<3;++i)
{
sol+=M_N[2][i]*I[i];sol%=mod;}
out<<sol<<'\n';
}
return 0;
}