Pagini recente » Cod sursa (job #667588) | Cod sursa (job #1637401) | Cod sursa (job #1691130) | Cod sursa (job #358385) | Cod sursa (job #2252871)
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
struct Matrix
{
int a[6][6];
int n,m;
};
Matrix A, U, I;
int x,y,z,a,b,c,n;
void Initializare()
{
I.n=3;
I.m=3;
I.a[0][0]=I.a[1][1]=I.a[2][2]=1;
A.n=1;
A.m=3;
A.a[0][0]=x;
A.a[0][1]=y;
A.a[0][2]=z;
U.n=3;
U.m=3;
U.a[1][0]=U.a[2][1]=1;
U.a[0][2]=a;
U.a[1][2]=b;
U.a[2][2]=c;
}
///0 0 A
///1 0 B
///0 1 C
Matrix MatMult(Matrix A,Matrix B)
{
Matrix R;
R.n=A.n;
R.m=B.m;
for(int i=0;i<R.n;i++)
for(int j=0;j<R.m;j++)
{
R.a[i][j]=0;
for(int k=0;k<=A.m;k++)
R.a[i][j]+=(A.a[i][k]*B.a[k][j])%mod;
}
return R;
}
Matrix PowLog(Matrix X,int n)
{
Matrix P = I;
while (n)
{
if (n&1)
{
P=MatMult(P,X);
n--;
}
X=MatMult(X,X);
n>>=1;
}
return P;
}
int main()
{
int T;
fin>>T;
for(int i=1;i<=T;i++)
{
fin>>x>>y>>z>>a>>b>>c>>n;
Initializare();
U=PowLog(U,n);
fout<<A.a[0][0]<<" "<<A.a[0][1]<<" "<<A.a[0][2]<<"\n";
A=MatMult(A,U);
}
return 0;
}