Pagini recente » Cod sursa (job #1930797) | Cod sursa (job #105794) | Cod sursa (job #1791650) | Cod sursa (job #2820331) | Cod sursa (job #1373931)
#include <iostream>
#include <fstream>
using namespace std;
long long M[4][4],O[4][4],aux[4][4],x,y,z,a,b,c,n,RASPUNS;
int main()
{
int i,j,R;
FILE *f=fopen("iepuri.in","r");
FILE *g=fopen("iepuri.out","w");
fscanf(f,"%d",&R);
while(R)
{
fscanf(f,"%lld %lld %lld",&a,&b,&c);
fscanf(f,"%lld %lld %lld",&M[1][1],&M[1][2],&M[1][3]);
fscanf(f,"%lld",&n);
M[2][2]=M[2][3]=M[3][1]=M[3][3]=0;
O[1][2]=O[1][3]=O[2][1]=O[2][3]=O[3][1]=O[3][2]=0;
O[1][1]=O[2][2]=O[3][3]=1;
M[2][1]=M[3][2]=1;
n-=2;
while(n)
{
if(n%2!=0)
{
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
aux[i][j]=(O[i][1]*M[1][j]+O[i][2]*M[2][j]+O[i][3]*M[3][j])%666013;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
O[i][j]=aux[i][j];
}
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
aux[i][j]=(M[i][1]*M[1][j]+M[i][2]*M[2][j]+M[i][3]*M[3][j])%666013;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
M[i][j]=aux[i][j];
n/=2;
}
RASPUNS=((O[1][1]*c)%666013+(O[1][2]*b)%666013+(O[1][3]*a)%666013)%666013;
fprintf(g,"%lld\n",RASPUNS);
R--;
}
return 0;
}