Pagini recente » Cod sursa (job #790220) | Cod sursa (job #2906402) | Cod sursa (job #592749) | Cod sursa (job #2254635) | Cod sursa (job #2266690)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int MOD = 666013;
struct matrice
{
long long a00,a01,a02,a10,a11,a12,a20,a21,a22;
};
matrice A;
void creareA(long long a, long long b, long long c)
{
A.a00 = 0; A.a01 = 1; A.a02 = 0;
A.a10 = 0; A.a11 = 0; A.a12 = 1;
A.a20 = c; A.a21 = b; A.a22 = a;
}
matrice inmulteste( matrice A, matrice B)
{
matrice C;
C.a00 = (A.a00 * B.a00 + A.a01* B.a10+ A.a02 * B.a20) % MOD;
C.a01 = (A.a00 * B.a01 + A.a01* B.a11+ A.a02 * B.a21) % MOD;
C.a02 = (A.a00 * B.a02 + A.a01* B.a12+ A.a02 * B.a22) % MOD;
C.a10 = (A.a10 * B.a00 + A.a11* B.a10+ A.a12 * B.a20) % MOD;
C.a11 = (A.a10 * B.a01 + A.a11* B.a11+ A.a12 * B.a21) % MOD;
C.a12 = (A.a10 * B.a02 + A.a11* B.a12+ A.a12 * B.a22) % MOD;
C.a20 = (A.a20 * B.a00 + A.a21* B.a10+ A.a22 * B.a20) % MOD;
C.a21 = (A.a20 * B.a01 + A.a21* B.a11+ A.a22 * B.a21) % MOD;
C.a22 = (A.a20 * B.a02 + A.a21* B.a12+ A.a22 * B.a22) % MOD;
return C;
}
matrice putere(matrice M, long long k)
{
matrice I;
I.a00 = 1; I.a01 = 0; I.a02 = 0;
I.a10 = 0; I.a11 = 1; I.a12 = 0;
I.a20 = 0; I.a21 = 0; I.a22 = 1;
while(k!=0)
{
if(k%2==1)
{
I = inmulteste(I, M);
}
M = inmulteste(M, M);
k/=2;
}
return I;
}
int main()
{
long long T, x, y, z, a, b, c, n;
f >> T;
while (T)
{
f >> x >> y >> z >> a >> b >> c >> n;
creareA(a, b, c);
A = putere(A, n-2);
g << ((A.a20 * x) % MOD + (A.a21 * y) % MOD + (A.a22 * z) % MOD) % MOD << "\n";
T--;
}
return 0;
}