Pagini recente » Cod sursa (job #3319716) | Cod sursa (job #2553945) | Cod sursa (job #3260989) | Cod sursa (job #601598) | Cod sursa (job #3321576)
#include <fstream>
#include<string>
#include<vector>
#include<map>
#include<cmath>
using namespace std;
const string task="iepuri";
ifstream cin(task+".in");
ofstream cout(task+".out");
int T;
vector<vector<int>> multmatric(vector<vector<int>> mat1, vector<vector<int>> mat2) {
int R1 = mat1.size();
int C1 = mat1[0].size();
int R2 = mat2.size();
int C2 = mat2[0].size();
vector<vector<int>> matrez(R1, vector<int>(C2, 0));
for (int R = 0; R < R1; R++) {
for (int C = 0; C < C2; C++) {
for (int i = 0; i < C1; i++) {
matrez[R][C] += mat1[R][i] * mat2[i][C];
}
}
}
return matrez;
}
void solve()
{
int a,b,c,z0,z1,z2,n;
cin>>z0>>z1>>z2>>a>>b>>c>>n;
n-=2;
vector<vector<int>> x = {{a, b ,c },{1, 0, 0},{0, 1, 0}};
vector<vector<int>> result={{1,0,0},{0,1,0},{0,0,1}};
while (n > 0) {
if (n & 1)
result = multmatric(result, x);
x = multmatric(x, x);
n >>= 1;
}
vector<vector<int>> cnt={{z2},{z1},{z0}};
cnt=multmatric(result,cnt);
cout<<cnt[0][0]<<'\n';
}
signed main()
{
cin>>T;
while(T--)
{
solve();
}
return 0;
}