题目
完全不想看证明了!!!要记住!!!
(x-1)%k=(k+x%k-1)%k;(简单想想就很容易知道)
#include<cstdio>
using namespace std;
typedef long long ll;
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
ll quick_pow(ll c,ll p,ll mod){
ll res=1;
while(p){
if(p&1) res*=c,res%=mod;
c*=c,c%=mod,p>>=1;
}
return res;
}
int main(){
int T;scanf("%d",&T);
while(T--){
ll a,m,n,mod;scanf("%lld%lld%lld%lld",&a,&m,&n,&mod);
ll p=gcd(m,n),ans=quick_pow(a,p,mod);
printf("%lld\n",(mod+ans-1)%mod);
}
}