Pagini recente » Cod sursa (job #238525) | Cod sursa (job #1084010) | Cod sursa (job #908776) | Cod sursa (job #1926088) | Cod sursa (job #1504418)
#include<stdio.h>
using namespace std;
#define MOD 666013
int t,m[3][3],m2[3][3],result[3][3],v[3][3];
void printmatrix(int a[3][3])
{
for(int i=0; i<3; i++)
{
printf("\n");
for(int j=0; j<3; j++) printf("%d ",a[i][j]);
}
printf("\n\n");
}
void power(int A[3][3],int B[3][3])
{
int tmp[3][3];
for ( int i = 0; i < 3; i++ )
{
for ( int j = 0; j < 3; j++ )
{
tmp[i][j] = 0;
for ( int k = 0; k < 3; k++ )
{
tmp[i][j] = (tmp[i][j] + 1LL * A[i][k] * B[k][j]) % MOD;
}
}
}
for(int i=0; i<3; i++)
for(int j=0; j<3; j++) A[i][j]=tmp[i][j];
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%d",&t);
for(int i=0; i<t; i++)
{
int x,y,z,a,b,c,n;
scanf("%d %d %d %d %d %d %d",&x,&y,&z,&a,&b,&c,&n);
m[0][0] = 0;
m[0][1] = 0;
m[0][2] = c;
m[1][0] = 1;
m[1][1] = 0;
m[1][2] = b;
m[2][0] = 0;
m[2][1] = 1;
m[2][2] = a;
for(int i=0; i<3; i++)
for(int j=0; j<3; j++) if(i==j) result[i][j]=1;
else result[i][j]=0;
n -= 2;
while(n)
{
if(n % 2)
{
power(result, m);
}
power(m, m);
n >>= 1;
}
printf("%d\n",1LL * x * result[0][2] + 1LL * y * result[1][2] + 1LL * z * result[2][2]);
}
}