hdu 2685 gcd性质

知道公式就好办了,直接公式转换完成后快速幂取模就可以了
#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;
}
本文来自博客园,作者:correct,转载请注明原文链接:https://www.cnblogs.com/correct/p/12862066.html

浙公网安备 33010602011771号