Pagini recente » Cod sursa (job #3211438) | Cod sursa (job #1906689) | Cod sursa (job #818169) | Cod sursa (job #1568185) | Cod sursa (job #108984)
Cod sursa(job #108984)
#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 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 long a[][Max],long long b[][Max])
{
long long i,j,k,c[Max][Max];
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]%Mod)*(b[k][j]%Mod))%Mod)%Mod;
for(i=1;i<=3;++i)
for(j=1;j<=3;++j) b[i][j]=c[i][j]%Mod;
}
void solve()
{
long long c[Max][Max],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]%Mod)*(p[k][j]%Mod))%Mod)%Mod;
fprintf(g,"%lld\n",c[1][1]);
}
int main()
{
long t;
fscanf(f,"%ld",&t);
for(int i=1;i<=t;++i)
{
fscanf(f,"%lld %lld %lld %lld %lld %lld %lld",&x,&y,&z,&A,&B,&C,&n);
init();
solve();
}
fclose(f);
fclose(g);
return 0;
}