快速幂之 a*b^p

求 a 乘 b对 p 取模的值。

输入格式

第一行输入整数a,第二行输入整数b,第三行输入整数p

输出格式

输出一个整数,表示a*b mod p的值。

数据范围

1≤a,b,p≤1e18

输入样例:

3
4
5

输出样例:

2
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;

int main(){
    ll a,b,p;
    cin>>a>>b>>p;
    ll res = 0        //结果
    while(b){
        if(b & 1){
            res = (res + a) % p;    // 进行值想加
        }
        b >>= 1;         // b 左移一位,相当于b/2
        a = (a<<1) % p;      //a 变为原来的两倍
    }
    cout << res <<endl;
    return 0;
}

 

 
posted @ 2021-10-31 23:53  爱慕6  阅读(68)  评论(0)    收藏  举报