Pagini recente » Cod sursa (job #2878469) | Cod sursa (job #2101848) | Cod sursa (job #1600636) | Cod sursa (job #2290085) | Cod sursa (job #2592479)
#include <iostream>
#include <fstream>
const int MOD = 666013;
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
typedef int matrice[3][3];
int x,y,z,a,b,c,n;
void inmulteste(matrice a,matrice b){
matrice c;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
c[i][j] = 0;
for(int k = 0; k < 3; k++)
c[i][j] = (c[i][j] + 1ll * a[i][k] * b[k][j] % MOD) % MOD;
}
}
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
a[i][j] = c[i][j];
}
void exponentiere(matrice rez,matrice baza,int exponent){
while(exponent){
if(exponent % 2 == 0){
inmulteste(baza,baza);
}else{
inmulteste(rez,baza);
inmulteste(baza,baza);
}
exponent /= 2;
}
}
void solve(){
matrice initial = {{0,0,c},{1,0,b},{0,1,a}};
matrice rez = {{1,0,0},{0,1,0},{0,0,1}};
exponentiere(rez,initial,n - 2);
if(n == 1)
out<<x<<"\n";
else if(n == 2)
out<<y<<"\n";
else{
int raspuns = (1ll * rez[0][2] * x % MOD + 1ll * rez[1][2] * y % MOD + 1ll * rez[2][2] * z % MOD) % MOD;
out<<raspuns<<"\n";
}
}
int main()
{
int t;
in>>t;
for(int i = 1; i <= t; i++){
in>>x>>y>>z>>a>>b>>c>>n;
solve();
}
return 0;
}