Pagini recente » Cod sursa (job #2321646) | Cod sursa (job #1916043) | Cod sursa (job #538745) | Cod sursa (job #1525114) | Cod sursa (job #1812044)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int t,n,x,y,z,a,b,c;
struct matrice
{
int a,b,c,d,e,f,p,q,r;
};
matrice p;
inline matrice m(matrice a)
{
a.a%=666013;
a.b%=666013;
a.c%=666013;
a.d%=666013;
a.e%=666013;
a.f%=666013;
a.p%=666013;
a.q%=666013;
a.r%=666013;
return a;
}
matrice inmultire(matrice a,matrice b)
{
matrice p;
p.a=a.a*b.a+a.b*b.d+a.c*b.p;
p.b=a.a*b.b+a.b*b.e+a.c*b.q;
p.c=a.a*b.c+a.b*b.f+a.c*b.r;
p.d=a.d*b.a+a.e*b.d+a.f*b.p;
p.e=a.d*b.b+a.e*b.e+a.f*b.q;
p.f=a.d*b.c+a.e*b.f+a.f*b.r;
p.p=a.p*b.a+a.q*b.d+a.r*b.p;
p.q=a.p*b.b+a.q*b.e+a.r*b.q;
p.r=a.p*b.c+a.q*b.f+a.r*b.r;
return m(p);
}
matrice exp(matrice a,long long p)
{
if(p==1)
return a;
if(p%2==0)
{
return m(exp(inmultire(a,a),p/2));
}
else
return m(inmultire(exp(a,p-1),a));
}
int main()
{
f>>t;
while(t--)
{
f>>x>>y>>z>>a>>b>>c>>n;
p.a=0;
p.b=0;
p.c=c;
p.d=1;
p.e=0;
p.f=b;
p.p=0;
p.q=1;
p.r=a;
p=exp(p,n-2);
g<<(x*p.c+y*p.f+z*p.r)%666013<<'\n';
}
}