a^b快速幂

求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9

基本算法题,快速幂模板题

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include <climits>
#include<queue>
#include<vector>
#include <string.h>
#include <math.h>
#include<map>
#include<string.h>
#define ll long long
using namespace std;
ll quickmod(ll a, ll b, int p)
{
     ll ans=1;
     a=a%p;
     while (b!=0)
     {
         if (b&1)
         {
             ans=(ans*a)%p;
         }
         b=(b>>1);
         a=(a*a)%p;
     }
     return ans;
}
int main()
{
     //    freopen("in.txt","r",stdin);
     ll ans,a,b;
     int p;
     scanf ( "%lld %lld %d" ,&a,&b,&p);
     ans=quickmod(a,b,p);
     if (b==0)
     {
         ans=1%p;//b为0,特判
     }
     printf ( "%lld\n" ,ans%p);
     return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41370251/article/details/80807806