Pagini recente » Cod sursa (job #795549) | Cod sursa (job #1855898)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
const int mod = 666013;
struct matrix
{
int a[5][5];
inline matrix operator *(matrix other)
{
matrix result;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
result.a[i][j] = 0;
for(int i = 0; i <= 2; i++)
for(int j = 0; j <= 2; j++)
for(int k = 0; k <= 2; k++)
result.a[i][j] = (result.a[i][j] + 1LL * a[i][k] * other.a[k][j]) % mod;
return result;
}
};
matrix init;
matrix rez;
matrix aux;
void reinit()
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
aux.a[i][j] = 0;
init.a[i][j] = 0;
aux.a[i][j] = 0;
}
}
}
void solve()
{
reinit();
int x, y, z, a, b, c, n;
in >> x >> y >> z >> a >> b >> c >> n;
init.a[0][2] = c;
init.a[1][0] = 1;
init.a[1][2] = b;
init.a[2][1] = 1;
init.a[2][2] = a;
rez.a[0][0] = x;
rez.a[0][1] = y;
rez.a[0][2] = z;
while(n)
{
if(n % 2 != 0)
rez = rez * init;
init = init * init;
n = n / 2;
}
out << rez.a[0][0] << "\n";
}
int main()
{
int T;
in >> T;
for(int i = 1; i <= T; i++)
solve();
return 0;
}