Pagini recente » Cod sursa (job #1317022) | Cod sursa (job #2025243) | Cod sursa (job #1059419) | Cod sursa (job #2655083) | Cod sursa (job #105348)
Cod sursa(job #105348)
#include <stdio.h>
int i0, i1, i2, A, B, C, n, num;
int m1[4][4], m[4][4], mm[4][4];
long p = 666013;
int main()
{
int i, k, j, jj, r, t, l;
freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d", &t);
for ( l = 1; l <= t; l++)
{
scanf("%d %d %d %d %d %d %d", &i0, &i1, &i2, &A, &B, &C, &n);
m1[1][2] = m[1][2] = m1[2][3] = m[2][3] = 1;
m1[1][1]=m1[2][1]=m1[2][2]=m1[1][3]=m[1][1]=m[2][1]=m[2][2]=m[1][3] = 0;
m1[3][1] = m[3][1] = C;
m1[3][2] = m[3][2] = B;
m1[3][3] = m[3][3] = A;
i = 1;
while ( 2*i <= n)
{
for ( j = 1; j <=3; j++)
for ( k = 1; k <= 3; k++)
mm[j][k] = ( ((m[j][1]%p) * (m[1][k]%p))%p%p + ((m[j][2]%p) * (m[2][k]%p))%p%p + ((m[j][3]%p) * (m[3][k]%p))%p%p)%p;
i = 2*i;
for ( j = 1; j <=3; j++)
for ( k = 1; k <=3; k++)
m[j][k] = mm[j][k];
}
for ( j = i; j < n; j++)
{
for ( jj = 1; jj <=3; jj++)
for ( k = 1; k <= 3; k++)
mm[jj][k] = ( ((m[jj][1]%p) * (m1[1][k]%p))%p%p + ((m[jj][2]%p) * (m1[2][k]%p))%p%p + ((m[jj][3]%p) * (m1[3][k]%p))%p%p)%p;
for ( jj = 1; jj <=3; jj++)
for ( k = 1; k <=3; k++)
m[jj][k] = mm[jj][k];
}
r = ( ((m[1][1]%p) * (i0%p))%p%p + ((m[1][2]%p) * (i1%p))%p%p + ((m[1][3]%p) * (i2%p))%p%p)%p;
printf("%d\n", r);
}
return 0;
}