Pagini recente » Cod sursa (job #973777) | Cod sursa (job #2196428) | Cod sursa (job #1823904) | Cod sursa (job #1895594) | Cod sursa (job #1845420)
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <string.h>
#define r 666013
using namespace std;
void inmultire_matrice (long long a[5][5], long long b[5][5])
{
int i, j;
long long c[5][5];
memset (c, 0, sizeof(c));
for (i=0; i<=2; i++)
for (j=0; j<=2; j++)
{
c[i][j] = (a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j]);
}
memcpy (a, c, sizeof(c));
}
void afisare_matrice (long long a[5][5])
{
int i, j;
for (i=0; i<=2; i++)
{
for (j=0; j<=2; j++)
{
cout<<a[i][j]<<'\t';
}
cout<<'\n';
}
}
int main()
{
int T, x, y, z, a, b, c, n, i;
long long A[5][5], S[5][5];
freopen ("iepuri.in", "r", stdin);
freopen ("iepuri.out", "w", stdout);
scanf ("%d", &T);
for (i=0; i<T; i++)
{
memset (A, 0, sizeof(A));
memset (S, 0, sizeof(S));
scanf ("%d%d%d%d%d%d%d", &x, &y, &z, &a, &b, &c, &n);
n-=2;
A[0][0]=a; A[0][1]=b; A[0][2]=c;
A[1][0]=1;
A[2][1]=1;
S[0][0]=1;
S[1][1]=1;
S[2][2]=1;
while (n)
{
if (n&1)
inmultire_matrice (S, A);
n>>=1;
inmultire_matrice (A, A);
}
printf ("%d\n", (S[0][0]*z + S[0][1]*y + S[0][2]*x)%r);
}
return 0;
}