Pagini recente » Cod sursa (job #1670817) | Cod sursa (job #3292317) | Cod sursa (job #456030) | Cod sursa (job #2407042) | Cod sursa (job #2129888)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
long long t, n, x, y, z, a, b, c, p[4][4], prod[4][4], f2, v[4][4];
void Inmultire()
{
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
p[i][j] = 0;
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
for(int k = 1; k <= 3; k++)
p[i][j] += (1LL * prod[i][k] * v[k][j]);
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
prod[i][j] = p[i][j];
}
void Inmultire2()
{
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
p[i][j] = 0;
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
for(int k = 1; k <= 3; k++)
p[i][j] += (1LL * v[i][k] * v[k][j]);
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
v[i][j] = p[i][j];
}
void Ridicare()
{
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
prod[i][j] = 0;
prod[1][1] = prod[2][2] = prod[3][3] = 1;
while(n)
{
if(n % 2 == 1)
Inmultire();
n /= 2;
Inmultire2();
}
}
void Rez()
{
for(int i = 1; i <= 3; i++)
for(int j = 1; j <= 3; j++)
v[i][j] = 0;
v[2][1] = 1;
v[3][2] = 1;
v[1][3] = a;
v[2][3] = b;
v[3][3] = c;
Ridicare();
long long sum = 0;
for(int i = 1; i <= 3; i++)
sum += (1LL * v[i][3] * f2);
fout << sum << "\n";
}
void Citire()
{
fin >> t;
for(int i = 1; i <= t; i++)
{
fin >> x >> y >> f2 >> a >> b >> c >> n;
n = 1;
Rez();
for(int j = 1; j <= 3; j++)
{
for(int k = 1; k <= 3; k++) fout << v[j][k] << " ";
fout << "\n";
}
}
}
int main()
{
Citire();
return 0;
}