Pagini recente » Cod sursa (job #2554796) | Cod sursa (job #1270901) | Cod sursa (job #2031473) | Cod sursa (job #317774) | Cod sursa (job #1405464)
#include<fstream>
#define mod 666013
using namespace std;
int x, y, z, a, b, c, i, n, t;
long long sum;
long long r[4][4], X[4][4], A[4][4];
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
void produs(long long a[4][4], long long b[4][4], long long c[4][4]){
int n = 3;
int i, j, k;
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++){
c[i][j] = 0;
for(k = 1; k <= n; k++){
c[i][j] = (c[i][j] + a[i][k] * b[k][j] * 1LL % mod) % 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];
}
}
}
void initializare(){
for(int i = 1; i <= 3; i++){
for(int j = 1; j <= 3; j++){
A[i][j] = 0;
if(i == j){
r[i][j] = 1;
}
else{
r[i][j] = 0;
}
}
}
A[2][1] = A[3][2] = 1;
A[1][1] = a;
A[1][2] = b;
A[1][3] = c;
}
int main(){
fin>> t;
for(; t; t--){
fin>> x >> y >> z >> a >> b >> c >> n;
initializare();
n -= 2;
while(n != 0){
if(n % 2 == 1){
produs(A, r, X);
copiere(r, X);
}
produs(A, A, X);
copiere(A, X);
n /= 2;
}
sum = 0;
sum = r[1][1] * z * 1LL % mod;
sum = (sum + r[1][2] * y * 1LL % mod) % mod;
sum = (sum + r[1][3] * x * 1LL % mod) % mod;
fout<< sum <<"\n";
}
return 0;
}