Pagini recente » Cod sursa (job #2498081) | Cod sursa (job #659370) | Cod sursa (job #663945) | Cod sursa (job #2679766) | Cod sursa (job #108935)
Cod sursa(job #108935)
#include<stdio.h>
#include<string.h>
#define Mod 666013
#define Max 6
FILE*f=fopen("iepuri.in","r");
FILE*g=fopen("iepuri.out","w");
long long unsigned 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 unsigned a[][Max], long long unsigned b[][Max])
{
long long unsigned 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 unsigned 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,"%llu\n",c[1][1]%Mod);
}
int main()
{
long t;
fscanf(f,"%llu",&t);
for(int i=1;i<=t;++i)
{
fscanf(f,"%llu %llu %llu %llu %llu %llu %llu",&x,&y,&z,&A,&B,&C,&n);
init();
solve();
}
return 0;
}