Pagini recente » Cod sursa (job #2116411) | Cod sursa (job #2655287) | Cod sursa (job #860224) | Cod sursa (job #2354602) | Cod sursa (job #2905210)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
int t, x, y, z, a, b, c, n;
long long rez[4][4], baza[4][4];
void inmultire(long long a[4][4], long long b[4][4])
{
long long aux[4][4];
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
{
aux[i][j] = 0;
for(int k = 1; k <= 3; k++)
aux[i][j] += (a[i][k]*b[k][j])%MOD;
}
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
{
a[i][j] = aux[i][j];
}
}
void ridicare(long long exp)
{
while(exp != 0)
{
if(exp%2 == 0)
{
inmultire(baza, baza);
exp /= 2;
}
else
{
inmultire(rez, baza);
exp--;
}
}
}
int main()
{
cin >> t;
for(int i = 1; i <= t; i++)
{
cin >> x >> y >> z >> a >> b >> c >> n;
baza[1][2] = baza[2][3] = 1;
baza[3][1] = c;
baza[3][2] = b;
baza[3][3] = a;
rez[1][1] = rez[2][2] = rez[3][3] = 1;
ridicare(n-2);
cout << ( (rez[3][1]*x) + (rez[3][2]*y)+ (rez[3][3]*z) ) % MOD << '\n';
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
rez[i][j] = baza[i][j] = 0;
}
return 0;
}