Pagini recente » Cod sursa (job #3186959) | Cod sursa (job #3266481) | Cod sursa (job #2714972) | Cod sursa (job #1944504) | Cod sursa (job #3286109)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
const int mod = 666013;
int m[5][5], v[5][5];
int inm(int a[5][5], int b[5][5])
{
int c[5][5];
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 3; j ++){
c[i][j] = 0;
for(int t = 1; t <= 3; t ++)
c[i][j] = (c[i][j] + a[i][t] * b[t][j] % mod) % mod;
}
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 3; j ++)
a[i][j] = c[i][j];
}
void expo(int ans[5][5], int b)
{
int a[5][5];
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 3; j ++)
a[i][j] = ans[i][j];
while(b)
if(b % 2 == 0)
b /= 2, inm(a, a);
else
b --, inm(ans, a);
}
void solv()
{
int x, y, z, a, b, c, n;
f >> x >> y >> z >> a >> b >> c >> n;
for(int i = 1; i <= 3; i ++)
for(int j = 1; j <= 3; j ++)
m[i][j] = 0;
m[3][1] = c; m[3][2] = b; m[3][3] = a;
m[1][2] = m[2][3] = 1; expo(m, n - 1);
v[1][1] = x; v[2][1] = y; v[3][1] = z;
inm(m, v);
g << m[1][1] << '\n';
}
int main()
{
int t; f >> t;
for(; t >= 1; t --)
solv();
return 0;
}