Pagini recente » Istoria paginii runda/das | Cod sursa (job #495856) | Cod sursa (job #1686912) | Cod sursa (job #2069744) | Cod sursa (job #124775)
Cod sursa(job #124775)
#include<stdio.h>
long n, a[4][4], t, rez, b[4][4], nr, c[4][4], q, r, mod = 666013;
void ridic(int ex)
{
int i, j, k;
rez = 0;
while (ex)
{
if (ex%2==0)
{
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
for(k=1; k<=3; k++)
c[i][j] += (a[i][k]*a[k][j])%mod;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++) a[i][j]=c[i][j];
ex/=2;
}
else {
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
for(k=1; k<=3; k++)
c[i][j] += (a[i][k]*b[k][j])%mod;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++) b[i][j]=c[i][j];
ex--;
}
for (int i=1; i<=3; i++)
for (int j=1; j<=3; j++) c[i][j]=0;
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%ld",&t);
int x, y, z, p, q, r, i, j, k;
while (t--)
{
scanf("%d %d %d %d %d %d %ld", &x, &y, &z, &p, &q, &r, &n);
a[1][1] = 0; a[1][2] = 1; a[1][3] = 0;
a[2][1] = 0; a[2][2] = 0; a[2][3] = 1;
a[3][1] = r; a[3][2] = q; a[3][3] = p;
for ( i=1; i<=3; i++)
for (j=1; j<=3; j++) c[i][j]=0;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++) b[i][j]=a[i][j];
ridic(n-1);
a[1][1] = x; a[1][2] = 0; a[1][3] = 0;
a[2][1] = y; a[2][2] = 0; a[2][3] = 0;
a[3][1] = z; a[3][2] = 0; a[3][3] = 0;
for ( i=1; i<=3; i++)
for (j=1; j<=3; j++) c[i][j]=0;
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
for(k=1; k<=3; k++)
c[i][j] += (b[i][k]*a[k][j])%mod;
printf("%ld\n",c[1][1]);
}
return 0;
}