Pagini recente » Cod sursa (job #2241793) | Cod sursa (job #1417012) | Cod sursa (job #3198086) | Cod sursa (job #1368127) | Cod sursa (job #2763572)
#include <fstream>
using namespace std;
int const Mod = 666013;
ifstream f ("iepuri.in");
ofstream g ("iepuri.out");
struct Mat{
int v [4][4];
Mat (){
for(int i = 1 ; i <= 3 ; ++ i)
for(int j = 1 ; j <= 3 ; ++ j)
v [i][j] = 0;
}
Mat operator * (Mat X) const{
Mat r;
for(int i = 1 ; i <= 3 ; ++ i)
for(int j = 1 ; j <= 3 ; ++ j){
int s = 0;
for(int k = 1 ; k <= 3 ; ++ k)
s = (1LL * s + 1LL * v [i][k] * X.v [k][j]) % Mod;
r.v [i][j] = s;
}
return r;
}
Mat operator << (int x) const{
Mat c = *this , r;
r.v [1][1] = r.v [2][2] = r.v [3][3] = 1;
for(int i = 0 ; (1 << i) <= x ; ++ i){
if ((1 << i) & x)
r = r * c;
c = c * c;
}
return r;
}
}A , B;
int t , x , y , z , a , b , c , n;
void out (Mat X){
for(int i = 1 ; i <= 3 ; ++ i){
for(int j = 1 ; j <= 3 ; ++ j)
g << X.v [i][j] << ' ';
g << '\n';
}
g << '\n';
}
int main()
{
f >> t;
while (t --){
f >> x >> y >> z >> a >> b >> c >> n;
Mat A , B;
A.v [1][1] = x , A.v [1][2] = y , A.v [1][3] = z;
B.v [1][1] = 0 , B.v [1][2] = 0 , B.v [1][3] = c;
B.v [2][1] = 1 , B.v [2][2] = 0 , B.v [2][3] = b;
B.v [3][1] = 0 , B.v [3][2] = 1 , B.v [3][3] = a;
Mat r = (A * (B << (n - 2)));
g << r.v [1][3] << '\n';
}
return 0;
}