快速幂取模

it2023-11-23  68

有关取模公式

(a * b)% c = (a%c) * (b%c) % c a^b % c = (a % c)^b % c

#include<cstdio> #include<iostream> using namespace std; typedef long long ll ; ll qmod(ll a,ll n,ll k) { ll ans = 1; while(n) { if(n&1) ans =( ans * a ) % k; a = a * a % k; n = n >> 1; } return ans; } int main() { ll x,y,z; cin >> x >> y >> z; cout << qmod(x,y,z); return 0; } 不会爆的模板 LL qpow(LL x,LL y,LL m)//二分思想 { x=x%m;//防止第一个x*x就爆掉longlong LL ans=1;//记录答案 while(y)// 注意如果y=0的话不会进入循环 { if(y&1)//判断y是否是单数 { ans=ans*x; ans=ans%m; } x=x*x; x=x%m; y=y>>1; } ans=ans%m;//防止出现特殊数据:1^0%1=0的情况 return ans; }
最新回复(0)