Pagini recente » Cod sursa (job #246399) | Cod sursa (job #466832) | Cod sursa (job #3337769) | Cod sursa (job #884188) | Cod sursa (job #3327136)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
array<array<int, 3>, 3> inmultire(array<array<int, 3>, 3>& a, array<array<int, 3>, 3>& b) ///inmulteste doua matrici
{
array<array<int, 3>, 3> ans={0};
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
{
for(int k=0; k<3; k++)
ans[i][j]=(ans[i][j] + 1ll*a[i][k]*b[k][j])%MOD;
}
}
return ans;
}
array<array<int, 3>, 3> exponentiere_rapida(array<array<int, 3>, 3> a, int e)
{
array<array<int, 3>, 3> p={0};
for(int i=0; i<3; i++) p[i][i]=1;
while(e>0)
{
if((e&1)==1) p=inmultire(p, a);
a=inmultire(a, a);
e>>=1;
}
return p;
}
int main()
{
int t;
in >> t;
while(t--)
{
int x, y, z, a, b, c, n;
in >> x >> y >> z >> a >> b >> c >> n;
array<array<int, 3>, 3> ans={0}, m={0};
ans[0][0]=z; ans[0][1]=y; ans[0][2]=x;
m[0][0]=a; m[1][0]=b; m[2][0]=c;
m[0][1]=1; m[1][2]=1;
m=exponentiere_rapida(m, n-2);
ans=inmultire(ans, m);
out << ans[0][0] << "\n";
}
return 0;
}