Pagini recente » Cod sursa (job #59973) | Cod sursa (job #306298) | Cod sursa (job #95947) | Cod sursa (job #2127526) | Cod sursa (job #2282707)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fi("iepuri.in");
ofstream fo("iepuri.out");
struct Matrix
{
long long m[3][3];
};
Matrix Multiply(Matrix a, Matrix b)
{
Matrix rez;
for(int i = 0; i < 3; ++i)
{
for(int j = 0; j < 3; ++j)
{
rez.m[i][j] = 0;
for(int k = 0; k < 3; ++k)
{
rez.m[i][j] = (rez.m[i][j] + a.m[i][k]* b.m[k][j]) % MOD;
}
}
}
return rez;
}
Matrix Pow(Matrix a, int n)
{
Matrix rez;
for(int i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
if(i == j)
rez.m[i][j] = 1;
else
rez.m[i][j] = 0;
while(n)
{
if(n % 2)
rez = Multiply(rez, a);
a = Multiply(a,a);
n /= 2;
}
return rez;
}
int main()
{
long long x, y, z, t, n;
fi>>t;
while(t--)
{
Matrix rabbits;
fi>>x>>y>>z;
for(int i = 0; i < 3; ++i)
for(int j = 0; j < 3; ++j)
rabbits.m[i][j] = 0;
for(int i = 2; i >= 0; --i)
fi>>rabbits.m[2][i];
rabbits.m[0][1] = 1;
rabbits.m[1][2] = 1;
fi>>n;
rabbits = Pow(rabbits, n);
fo<<(rabbits.m[0][0] * x + rabbits.m[0][1] * y + rabbits.m[0][2] * z) % MOD<<"\n";
}
}