Pagini recente » Cod sursa (job #393470) | Cod sursa (job #779826) | Cod sursa (job #154818) | Cod sursa (job #2191641) | Cod sursa (job #2263649)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ofstream fo("iepuri.out");
ifstream fi("iepuri.in");
struct matrix
{
int a[4][4],l;
};
int n,t,x1,x2,x3,a,b,c;
matrix operator * (matrix A,matrix B)
{
matrix C;
C.l=3;
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
C.a[i][j]=0;
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
for(int k=1; k<=3; k++)
C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j])%MOD;
return C;
}
matrix ridicare(matrix baza,int putere)
{
matrix rezultat;
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
rezultat.a[i][j]=0;
for(int i=1; i<=3; i++)
rezultat.a[i][i]=1;
for(int i=1; i<(1<<30); i*=2)
{
if(putere & i)
{
rezultat=rezultat*baza;
}
baza=baza*baza;
}
return rezultat;
}
matrix T,F;
int main()
{
fi>>t;
T.l=3;
for(int test=1; test<=t; test++)
{
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
{
T.a[i][j]=0;
F.a[i][j]=0;
}
for(int i=1; i<=3; i++)
T.a[i][i+1]=1;
fi>>x1>>x2>>x3>>a>>b>>c>>n;
T.a[3][1]=c;
T.a[3][2]=b;
T.a[3][3]=a;
F.a[1][1]=x1;
F.a[2][1]=x2;
F.a[3][1]=x3;
T=ridicare(T,n-1);
T=T*F;
fo<<T.a[2][1]%MOD<<endl;
}
fo.close();
fi.close();
return 0;
}