Pagini recente » Cod sursa (job #2204170) | Cod sursa (job #1761275) | Cod sursa (job #1369844) | Cod sursa (job #1151369) | Cod sursa (job #682343)
Cod sursa(job #682343)
#include <fstream>
#define MOD 666013
using namespace std;
void mult(long long a[3][3], long long b[3][3])
{
int aux[3][3] = {{0,0,0},{0,0,0},{0,0,0}};
for(int i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
for(int k = 0; k < 3; ++k)
aux[i][j] = (aux[i][j] + (a[i][k]*b[k][j]))%MOD;
for(int i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
a[i][j] = aux[i][j];
}
int main()
{
long long sol[3][3], x[3][3];
int T;
ifstream in("iepuri.in");
in >> T;
ofstream out("iepuri.out");
for(int X,Y,Z,A,B,C,N;T;--T)
{
in >> X >> Y >> Z >> A >> B >> C >> N;
if(N==0)
out << X << "\n";
else if (N==1)
out << Y << "\n";
else if (N==2)
out << Z << "\n";
else
sol = {{1,0,0},{0,1,0},{0,0,1}}, x = {{0,1,0},{0,0,1},{C,B,A}};
for(unsigned long long i = 0; (1<<i) <= N-2; ++i)
{
if(((1<<i)&(N-2)) > 0)
mult(sol, x);
mult(x,x);
}
out << (((sol[2][0]*X)%MOD + (sol[2][1]*Y)%MOD)%MOD + (sol[2][2]*Z)%MOD)%MOD << "\n";
}
in.close();
out.close();
return 0;
}