Pagini recente » Cod sursa (job #3183781) | Cod sursa (job #3176681) | Cod sursa (job #66623) | Cod sursa (job #2786888) | Cod sursa (job #349410)
Cod sursa(job #349410)
#include<stdio.h>
struct mat{long long uu,ud,ut,du,dd,dt,tu,td,tt;}ma;
long long tn;
long t,t0,t1,t2,a,b,c,n;
mat inm(mat a,mat b)
{mat c;
c.uu=a.uu*b.uu+a.ud*b.du+a.ut*b.tu;
c.uu%=666013;
c.ud=a.uu*b.ud+a.ud*b.dd+a.ut*b.td;
c.ud%=666013;
c.ut=a.uu*b.ut+a.ud*b.dt+a.ut*b.tt;
c.ut%=666013;
c.du=a.du*b.uu+a.dd*b.du+a.dt*b.tu;
c.du%=666013;
c.dd=a.du*b.ud+a.dd*b.dd+a.dt*b.td;
c.dd%=666013;
c.dt=a.du*b.ut+a.dd*b.dt+a.dt*b.tt;
c.dt%=666013;
c.tu=a.tu*b.uu+a.td*b.du+a.tt*b.tu;
c.tu%=666013;
c.td=a.tu*b.ud+a.td*b.dd+a.tt*b.td;
c.td%=666013;
c.tt=a.tu*b.ut+a.td*b.dt+a.tt*b.tt;
c.tt%=666013;
return c;
}
mat rest(mat ma,long m)
{mat z;
if(m==1)return ma;
else
if(m%2) return inm(rest(ma,m-1),ma);
else
{
z=rest(ma,m/2);
return inm(z,z);
}
}
int main()
{
freopen("iepuri.in","r",stdin);
freopen("iepuri.out","w",stdout);
scanf("%ld",&t);
for(;t;--t)
{scanf("%ld%ld%ld%ld%ld%ld%ld",&t0,&t1,&t2,&a,&b,&c,&n);
ma.uu=0;
ma.ud=1;
ma.ut=0;
ma.du=0;
ma.dd=0;
ma.dt=1;
ma.tu=c;
ma.td=b;
ma.tt=a;
ma=rest(ma,n);
tn=ma.uu*t0+ma.ud*t1+ma.ut*t2;
tn%=666013;
printf("%lld\n",tn);}
return 0;
}