版权声明:本博客版权属于BIGBIGPPT,未经允许不得商用 https://blog.csdn.net/BIGBIGPPT/article/details/88410588
快速幂原理就是将emm
比如求n的m次方nm那么就将m转化为2进制数
对每一位进行判断,如果当前位数为1就进行一次乘法,同时每次判断后的乘数为n的当前判断的m的位数的幂。
假设当前已经判断到2进制下m的第k位位数上为一那么乘上nk。
代码好懂
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,k,p;
int ans = 1;
inline ll mi(ll m, ll n){//m的n次幂;
ans = 1;
ll temp = m,s = n;
while(temp != 0){
if(temp%2 == 1) ans = ans * s % k;
temp /= 2;
s = s * s % k;
}
return ans;
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&k)){
mi();
printf("%d\n",ans);
}
return 0;
}