Pagini recente » Cod sursa (job #1934555) | Cod sursa (job #1132666) | Cod sursa (job #862530) | Cod sursa (job #2955330) | Cod sursa (job #108931)
Cod sursa(job #108931)
#include<stdio.h>
#include<string.h>
#define Mod 666013
#define Max 5
FILE*f=fopen("iepuri.in","r");
FILE*g=fopen("iepuri.out","w");
long A,B,C,a[Max][Max],sol[Max][Max],n,x,y,z,p[Max][Max];
void init()
{
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]=C; a[3][2]=B; a[3][3]=A;
p[1][1]=x; p[2][1]=y; p[3][1]=z;
for(int i=1;i<=3;++i) for(int j=1;j<=3;++j) sol[i][j]=a[i][j];
}
void inmultire(long a[][Max], long b[][Max])
{
long i,j,k,c[4][4];
memset(c,0,sizeof(c));
for(i=1;i<=3;++i)
for(j=1;j<=3;++j)
for(k=1;k<=3;++k)
c[i][j]=(c[i][j]%Mod+(a[i][k]*b[k][j])%Mod)%Mod;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j) b[i][j]=c[i][j]%Mod;
}
void solve()
{
long c[4][4],i,j,k;
memset(c,0,sizeof(c));
n--;
while(n!=0)
{
if(n%2==0)
{
inmultire(a,a);
n/=2;
}
else
{
inmultire(a,sol);
n--;
}
}
for(i=1;i<=3;++i)
for(j=1;j<=1;++j)
for(k=1;k<=3;++k)
c[i][j]=(c[i][j]%Mod+(sol[i][k]*p[k][j])%Mod)%Mod;
fprintf(g,"%ld\n",c[1][1]);
}
int main()
{
long t;
fscanf(f,"%ld",&t);
for(int i=1;i<=t;++i)
{
fscanf(f,"%ld %ld %ld %ld %ld %ld %ld",&x,&y,&z,&A,&B,&C,&n);
init();
solve();
}
return 0;
}