哈工大OJ好慢..
这题很容易推导,注意负数就A了
#include
#include
#define ff(i,n) for(int i=0;i
>=1)
{
if(n&1)
t=t*a;
a=a*a;
}
return t;
}
void init(int x,int y)
{
memset(A.m,0,sizeof(A.m));
A.m[0][0]=A.m[2][1]=1;
A.m[0][1]=A.m[1][1]=x;
A.m[0][2]=A.m[1][2]=y;
B=A;
}
long long calc(int x,int a,int b,Mat t)
{
long long aa=0;
if(x>2)
{
t=power(x-1,t);
//DEBUG(t);
aa=t.m[0][0]*(a+b)%mod+t.m[0][1]*b%mod+t.m[0][2]*a%mod;
}
else
{
if(x==0) aa=a;
if(x==1) aa=a+b;
}
//printf("ans:%d\n",aa);
return aa%mod;
}
int main()
{
int T;
long long int x,y,a,b,s,e;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&x,&y,&s,&e);
init(x,y);
int aa=0,bb=0;
aa=calc(s-1,a,b,A);
bb=calc(e,a,b,B);
aa=bb-aa;
aa%=mod;
if(aa<0)
aa+=mod;
printf("%d\n",aa);
}
return 0;
}