Pagini recente » Cod sursa (job #2368523) | Cod sursa (job #2768086) | Cod sursa (job #559394) | Cod sursa (job #3284777) | Cod sursa (job #3166830)
#include<fstream>
std::ifstream fin("iepuri.in");
std::ofstream fout("iepuri.out");
#define mod 666013
void multiplyMat(unsigned long long a[3][3], unsigned long long b[3][3])
{
unsigned long long aux[3][3];
for(int index=0; index<3; ++index)
for(int next=0; next<3; ++next)
{
unsigned long long s=0;
for(int k=0; k<3; ++k)
s=(s+(a[index][k]*b[k][next])%mod)%mod;
aux[index][next]=s;
}
for(int index=0; index<3; ++index)
for(int next=0; next<3; ++next)
a[index][next]=aux[index][next];
}
void put(unsigned long long power, unsigned long long prod[3][3], unsigned long long mat[3][3])
{
while(power)
{
if(power%2)
multiplyMat(prod, mat);
multiplyMat(mat, mat);
power/=2;
}
}
int main()
{
int num;
fin>>num;
for(int index=0; index<num; ++index)
{
int x, y, z, a, b, c, n;
fin>>x>>y>>z>>a>>b>>c>>n;
unsigned long long mat[3][3]={1, 1, 1, 1, 0, 0, 0, 1, 0};
mat[0][0]=a;
mat[0][1]=b;
mat[0][2]=c;
unsigned long long prod[3][3]={1, 0, 0, 0, 1, 0, 0, 0, 1};
put(n-2, prod, mat);
fout<<(prod[0][0]*z+prod[0][1]*y+prod[0][2]*x)%mod<<'\n';
}
fin.close();
fout.close();
return 0;
}