Pagini recente » Cod sursa (job #1089588) | Cod sursa (job #856147) | Cod sursa (job #872925) | Cod sursa (job #1343508) | Cod sursa (job #1183877)
#include <cstdio>
#define cons 666013
using namespace std;
long long a[3][3],b[3][3],m[3][3],c[3][3],x0,x1,x2,caz,t,n;
void exp()
{
int i,j,k;
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
for(k=0;k<=2;k++)
{
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%cons;
}
}
}
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{a[i][j]=c[i][j];b[i][j]=c[i][j];c[i][j]=0;}
}
if(n%2)
{
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{
for(k=0;k<=2;k++)
{
c[i][j]=(c[i][j]+m[i][k]*a[k][j])%cons;
}
}
}
for(i=0;i<=2;i++)
{
for(j=0;j<=2;j++)
{m[i][j]=c[i][j];c[i][j]=0;}
}
}
if(n/2){n/=2;exp();}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%ld",&t);
for(caz=1;caz<=t;caz++){
a[0][0]=0;a[0][1]=1;a[0][2]=0;
a[1][0]=0;a[1][1]=0;a[1][2]=1;
scanf("%ld %ld %ld %ld %ld %ld %ld",&x0,&x1,&x2,&a[2][2],&a[2][1],&a[2][0],&n);
m[0][0]=1;m[0][1]=0;m[0][2]=0;
m[1][0]=0;m[1][1]=1;m[1][2]=0;
m[2][0]=0;m[2][1]=0;m[2][2]=1;
b[0][0]=1;b[0][1]=0;b[0][2]=0;
b[1][0]=0;b[1][1]=1;b[1][2]=0;
b[2][0]=0;b[2][1]=0;b[2][2]=1;
c[0][0]=0;c[0][1]=0;c[0][2]=0;
c[1][0]=0;c[1][1]=0;c[1][2]=0;
c[2][0]=0;c[2][1]=0;c[2][2]=0;
n-=2;exp();
n=(m[2][0]*x0+m[2][1]*x1+m[2][2]*x2)%cons;
printf("%ld\n",n);
}
return 0;
}