Pagini recente » Cod sursa (job #605144) | Cod sursa (job #2704990) | Cod sursa (job #1591677) | Cod sursa (job #731062) | Cod sursa (job #745228)
Cod sursa(job #745228)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
inline void inmulteste(long long mat1[4][4], long long mat2[4][4])
{
long long i,j,k,mat3[4][4];
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
{
mat3[i][j]=0;
for(k=1;k<=3;++k)
mat3[i][j]=(mat3[i][j]+mat1[i][k]*mat2[k][j])%666013;
}
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
mat1[i][j]=mat3[i][j];
return;
}
long long rez[4][4],m[4][4];
void putere(int p)
{
if(p==1)
{
return;
}
if(p%2==1)
{
putere(p/2);
inmulteste(rez,rez);
inmulteste(rez,m);
return;
}
putere(p/2);
inmulteste(rez,rez);
}
int main()
{
int t,k,x,y,z,a,b,c,n;
in>>t;
for(k=1;k<=t;++k)
{
in>>x>>y>>z>>a>>b>>c>>n;
m[3][1]=c;
m[3][2]=b;
m[3][3]=a;
m[1][2]=1;
m[2][3]=1;
rez[1][1]=rez[1][3]=rez[2][1]=rez[2][2]=0;
rez[3][1]=c;
rez[3][2]=b;
rez[3][3]=a;
rez[1][2]=1;
rez[2][3]=1;
putere(n);
out<<(rez[1][1]*x+rez[1][2]*y+rez[1][3]*z)%666013<<"\n";
}
return 0;
}