知道公式就好办了,直接公式转换完成后快速幂取模就可以了
#include <cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b){
return b == 0 ? a : gcd(b, a % b);
}
ll qpow(ll a, ll b, ll mod){
ll ans = 1;
ans %= mod;
while (b){
if(b & 1){
ans = ans * a % mod;
}
b >>= 1;
a = a * a % mod;
}
return ans % mod;
}
int main(){
ll t, a, k, n, m;
cin >> t;
while (t--){
cin >> a >> m >> n >> k;
cout << (qpow(a, gcd(m, n), k) - 1 + k) % k << endl;
}
return 0;
}