Pagini recente » Cod sursa (job #2465396) | Cod sursa (job #1392044) | Cod sursa (job #1933742) | Cod sursa (job #1858546) | Cod sursa (job #233548)
Cod sursa(job #233548)
#include <fstream>
using namespace std;
typedef long long int62;
ifstream fin("iepuri.in");
int62 baza[3][3]; //baza
int62 ans[3][3];
int62 mod = 666013;
void patrat() {
int62 ret[3][3];
memset(ret, 0, sizeof(ret));
int62 i, j, k;
for (i = 0; i < 3; ++i)
for (j = 0; j < 3; ++j) for (k = 0; k < 3; ++k) ret[i][j]+=ans[i][k]*ans[k][j], ret[i][j]%=mod;
memcpy(ans, ret, sizeof(ans));
}
void oribaza() {
int62 ret[3][3];
memset(ret, 0, sizeof(ret));
int i, j, k;
for (i = 0; i < 3; ++i)
for (j = 0; j < 3; ++j)
for (k = 0; k < 3; ++k) ret[i][j]+=ans[i][k]*baza[k][j],ret[i][j]%=mod;
memcpy(ans, ret, sizeof(ans));
}
void divide(int62 n) {
if (n == 1) {
memcpy(ans, baza, sizeof(ans));
return;
}
divide(n/2);
//acum in ans ^ (n/2)
patrat();
if (n % 2) oribaza();
}
ofstream fout("iepuri.out");
void go() {
//X Y Z A B C N
int62 x, y, z, a, b, c, n;
fin >> x >> y >> z >> a >> b >> c >> n;
memset(baza, 0, sizeof(baza));
baza[0][1] = 1;
baza[1][2] = 1;
baza[2][0] = c % mod; baza[2][1] = b % mod; baza[2][2] = a % mod;
divide(n);
fout << (x*ans[0][0] + y*ans[0][1] + z*ans[0][2])%mod << '\n';
}
int main() {
int t;
fin >> t;
while (t > 0) {
go();
--t;
}
return 0;
}