代码:
学会了新姿势,以前只会
longn" role="presentation">longn的快速乘,无限T…后来想起我原来很久以前其实是学过的。
using namespace std;
inline LL mul(LL x,LL y,LL MOD){
x=x%MOD,y=y%MOD;
return ((x*y-(LL)(((long double)x*y+0.5)/MOD)*MOD)%MOD+MOD)%MOD;
}
int main()
{
ll a[2],m[2],c,M,k;
int t;
cin>>t;
while(t--)
{
scanf("%lld%lld",a,a+1);
scanf("%lld%lld",m,m+1);
scanf("%lld%lld%lld",&c,&M,&k);
ll ans=mul(a[0],a[1],M);
for(int i=2;i<=k;i++)
{
ll temp=((mul(m[0],a[1],M)+mul(m[1],a[0],M))%M+c)%M;
ans=mul(ans,temp,M);
a[0]=a[1];
a[1]=temp;
}
printf("%lld
",ans);
}
return 0;
}
/**************************************************************
Problem: 1071
User: coldfresh
Language: C++
Result: 正确
Time:3386 ms
Memory:1540 kb
****************************************************************/