快速幂题解
2025-10-05 10:11:02
发布于:广东
2阅读
0回复
0点赞
#include <iostream>
#include <cmath>
using namespace std;
long long PoW_(long long a, long long b, long long p) {
    long long res = 1;
    while (b) {
        if (b & 1) res = (res * a) % p;
        b = b >> 1;
        a = (a * a) % p;
    }
    return res;
}
int main() {
    long long a, b, p;
    cin >> a >> b >> p;
    long long mod = PoW_(a, b, p);
    cout << a << "^" << b << " mod " << p << "=" << mod << endl;
    return 0;
}
递归题解
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
ll qpow(ll a,ll b,ll p){
	a%=p;
	if(b==0)return 1;
	ll t=qpow(a,b>>1,p);
	t=t*t%p;
	if(b&1)t=t*a%p;
	return t;
}
int main(){
	ll a,b,p;
	cin>>a>>b>>p;
	ll mod = qpow(a, b, p);
    cout << a << "^" << b << " mod " << p << "=" << mod << endl;
}
这里空空如也

有帮助,赞一个