Pagini recente » Cod sursa (job #1541071) | Cod sursa (job #2442563) | Cod sursa (job #953022) | Cod sursa (job #994571) | Cod sursa (job #908445)
Cod sursa(job #908445)
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long q[4][4];
long long mod = 666013;
void Inmultire(long long a[4][4],long long b[4][4])
{
long long c[4][4],i,j;
for(i=0;i<=2;i++)
{
c[i][0] = a[i][0]*b[0][0] + a[i][1]*b[1][0] + a[i][2]*b[2][0];
c[i][1] = a[i][0]*b[0][1] + a[i][1]*b[1][1] + a[i][2]*b[2][1];
c[i][2] = a[i][0]*b[0][2] + a[i][1]*b[1][2] + a[i][2]*b[2][2];
}
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
{
if(c[i][j]>mod)
c[i][j] %= mod;
b[i][j]=c[i][j];
}
}
void Solve(long long k)
{
int i,j;
long long w[4][4];
if(k>1)
if(k%2==0)
{
Inmultire(q,q);
Solve(k/2);
}
else
{
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
w[i][j] = q[i][j];
Inmultire(q,q);
Solve((k-1)/2);
Inmultire(w,q);
}
}
int main()
{
long long num_tests,a,b,c,x,y,z,n;
f>>num_tests;
while(num_tests--)
{
f>>x>>y>>z>>a>>b>>c>>n;
//Initialize Matrix
q[0][0] = 0, q[0][1] = 1, q[0][2] = 0;
q[1][0] = 0, q[1][1] = 0, q[1][2] = 1;
q[2][0] = c, q[2][1] = b, q[2][2] = a;
Solve(n-2);
g<<(x*q[2][0] + y*q[2][1] + z*q[2][2])%mod<<'\n';
}
return 0;
}