二分法求快速幂

      G - A^B Mod C


给出3个正整数A B C,求A^B Mod C。
例如,3 5 8,3^5 Mod 8 = 3。
Input3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9) Output输出计算结果 Sample Input
3 5 8
Sample Output
3
 
  
 
  
代码:
#include
#include
typedef long long ll;
using namespace std;
void init(ll A,ll B, ll C)
{
    ll ans = 1;
    while(B)
    {
        if(B & 1)                    //如果B是奇数
        {
            ans=(ans * A) % C;
            B--;
        }
        B /= 2;
        A=(A * A) % C;
    }
    cout << ans << endl;
    return ;
}


int main()
{
    ll A,B,C;
    cin >> A >> B >> C;
    init(A,B,C);
    return 0;
}
 
  
模板:
 
  
#include
__int64 power(__int64 a,__int64 b,__int64 c)
{
     __int64 ans= 1 ;
     while (b)
     {
         if (b& 1 //当b为奇数时
         {
             ans=(ans*a)%c;   // a的99次方的等于a的49次方的平方,还要再乘以a
             b--;
         }
         b/= 2 ;   //二分
         a=a*a%c;    //  a的98次方的等于a的49次方的平方
     }
     return ans;
     
}
int main()
{
     long  a,b,c;
     while (scanf( "%ld%ld%ld" ,&a,&b,&c)!=EOF)
     {
     
         printf( "%ld\n" , power(a,b,c));
     }
     return 0 ;
}
 

你可能感兴趣的:(二分法求快速幂)