Pagini recente » Cod sursa (job #309170) | Cod sursa (job #1588822) | Cod sursa (job #2623104) | Istoria paginii runda/mission_impossible/clasament | Cod sursa (job #1605626)
#include <iostream>
#include <fstream>
#define Mod 666013
using namespace std;
struct matrice{
long long a, b, c, d, e, f, g, h, i;
}I3, m;
int X, Y, Z, A, B, C, N, T;
long long rasp;
matrice inmultireMatrice(matrice p, matrice q)
{
matrice r;
r.a = ((p.a*q.a)%Mod + (p.b*q.d)%Mod + (p.c*q.g)%Mod)%Mod;
r.b = ((p.a*q.b)%Mod + (p.b*q.e)%Mod + (p.c*q.h)%Mod)%Mod;
r.c = ((p.a*q.c)%Mod + (p.b*q.f)%Mod + (p.c*q.i)%Mod)%Mod;
r.d = ((p.d*q.a)%Mod + (p.e*q.d)%Mod + (p.f*q.g)%Mod)%Mod;
r.e = ((p.d*q.b)%Mod + (p.e*q.e)%Mod + (p.f*q.h)%Mod)%Mod;
r.f = ((p.d*q.c)%Mod + (p.e*q.f)%Mod + (p.f*q.i)%Mod)%Mod;
r.g = ((p.g*q.a)%Mod + (p.h*q.d)%Mod + (p.i*q.g)%Mod)%Mod;
r.h = ((p.g*q.b)%Mod + (p.h*q.e)%Mod + (p.i*q.h)%Mod)%Mod;
r.i = ((p.g*q.c)%Mod + (p.h*q.f)%Mod + (p.i*q.i)%Mod)%Mod;
return r;
}
matrice putereMatrice(matrice p, long long pw)
{
if(pw == 0)
return I3;
if(pw == 1)
return p;
matrice aux = putereMatrice(p, pw/2);
aux = inmultireMatrice(aux, aux);
if(pw%2 == 1)
aux = inmultireMatrice(aux, p);
return aux;
}
int main()
{
freopen("iepuri.in", "rt", stdin);
freopen("iepuri.out", "wt", stdout);
scanf("%d", &T);
I3.a = 1;
I3.e = 1;
I3.i = 1;
for(int i=1; i<=T; ++i){
scanf("%d%d%d%d%d%d%d", &X, &Y, &Z, &A, &B, &C, &N);
m.a = m.b = m.e = m.g = 0;
m.d = m.h = 1;
m.c = C;
m.f = B;
m.i = A;
m = putereMatrice(m, N-2);
rasp = 0;
rasp = (rasp + (m.c*X)%Mod)%Mod;
rasp = (rasp + (m.f*Y)%Mod)%Mod;
rasp = (rasp + (m.i*Z)%Mod)%Mod;
cout<< rasp<<'\n';
}
}