Pagini recente » Cod sursa (job #1901090) | Cod sursa (job #1892243) | Cod sursa (job #2503738) | Cod sursa (job #791979) | Cod sursa (job #2392700)
#include <bits/stdc++.h>
#define mod 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long matr_neutra[4][4];
void inmultire(long long A[4][4],long long B[4][4])
{
long long i,j,k,C[4][4];
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
C[i][j]=0;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
C[i][j]+=(A[i][k]*B[k][j])%mod;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
A[i][j]=C[i][j]%mod;
}
void putere(long long sol[4][4],long long k)
{
while(k)
{
if(k%2==1){inmultire(sol,matr_neutra);k--;}
else {inmultire(matr_neutra,matr_neutra);k=k/2;}
}
}
long long m,y,A,x,n,b,c,z,sol[4][4],a[4][4];
int main()
{
f>>m;
for(int pas=1;pas<=m;pas++)
{
f>>x>>y>>z>>A>>b>>c>>n;
a[1][1]=x;
a[1][2]=y;
a[1][3]=z;
a[2][1]=a[2][2]=a[2][3]=0;
a[3][1]=a[3][2]=a[3][3]=0;
matr_neutra[1][1]=0;
matr_neutra[1][2]=0;
matr_neutra[1][3]=A;
matr_neutra[2][1]=1;
matr_neutra[2][2]=0;
matr_neutra[2][3]=b;
matr_neutra[3][1]=0;
matr_neutra[3][2]=1;
matr_neutra[3][3]=c;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
sol[i][j]=0;
sol[1][1]=1;
sol[2][2]=1;
sol[3][3]=1;
putere(sol,n);
inmultire(a,sol);
g<<a[1][1]%mod<<'\n';
}
return 0;
}