Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/dragosvasilcanu | Monitorul de evaluare | Istoria paginii utilizator/alexastroe99 | Cod sursa (job #2005123)
#include <fstream>
#define MOD 666013
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
long long t,x,y,z,a,b,c,n,s,A[4][4],sol[4][4],X[4][4];
void produs (long long a[4][4],long long b[4][4],long long c[4][4]){
for (int i=1;i<=3;i++)
for (int j=1;j<=3;j++){
c[i][j] = 0;
for (int k=1;k<=3;k++){
c[i][j] += (a[i][k] * b[k][j] * 1LL % MOD);
c[i][j] %= MOD;
}
}
}
void copiere (long long a[4][4],long long b[4][4]){
for (int i=1;i<=3;i++)
for (int j=1;j<=3;j++)
a[i][j] = b[i][j];
}
int main (){
fin>>t;
for (;t--;){
fin>>x>>y>>z>>a>>b>>c>>n;
for (int i=1;i<=3;i++)
for (int j=1;j<=3;j++){
A[i][j] = 0;
if (i == j)
sol[i][j] = 1;
else
sol[i][j] = 0;
}
A[2][1] = A[3][2] = 1;
A[1][1] = a;
A[1][2] = b;
A[1][3] = c;
n -= 2;
while (n){
if (n % 2 == 1){
produs (A,sol,X);
copiere (sol,X);
}
produs (A,A,X);
copiere (A,X);
n/=2;
}
s = sol[1][1] * z * 1LL % MOD;
s += (sol[1][2] * y * 1LL % MOD) % MOD;
s %= MOD;
s += (sol[1][3] * x * 1LL % MOD) % MOD;
s %= MOD;
fout<<s<<"\n";
}
return 0;
}