Pagini recente » Cod sursa (job #3217967) | :) | Fotbal2 | Diferente pentru lot-2017/baraj-2 intre reviziile 5 si 6 | Cod sursa (job #129612)
Cod sursa(job #129612)
#include <stdio.h>
#define MODULO 666013
long long n, a, b, c, i0, i1, i2, m[4][4], r[4][4], e[4][4];
void inmultire(long long r[4][4], long long m[4][4])
{
int i, j, k;
for ( i = 1; i <= 3; i++)
for ( j = 1; j <= 3; j++)
e[i][j] = 0;
for ( i = 1; i <= 3; i++)
for ( j = 1; j <= 3; j++)
for ( k = 1; k <= 3; k++)
e[i][j] += r[i][k] * m[k][j];
for ( i = 1; i <= 3; i++)
for ( j = 1; j <= 3; j++)
r[i][j] = e[i][j] % MODULO;
}
void putere(int n)
{
if ( n >=1)
{
if ( n % 2 == 0)
{
putere(n/2);
inmultire(r, r);
}
else
{
putere(n-1);
inmultire(r, m);
}
}
}
int main()
{
long long rasp;
int t, l, i, j;
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d", &t);
for ( l = 1; l <= t; l++)
{
scanf("%lld %lld %lld %lld %lld %lld %lld", &i0, &i1, &i2, &a, &b, &c, &n);
m[1][2] = m[2][3] = 1;
m[1][1] = m[1][3] = m[2][1] = m[2][2] = 0;
m[3][1] = c; m[3][2] = b; m[3][3] = a;
for ( i = 1; i <= 3; i++)
for ( j = i+1; j <= 3; j++)
r[i][j] = r[j][i] = 0;
r[1][1] = r[2][2] = r[3][3] = 1;
putere(n);
rasp = ( r[1][1] * i0 + r[1][2] * i1 + r[1][3] * i2) %MODULO ;
printf("%lld\n", rasp);
}
return 0;
}