题目
https://www.acwing.com/problem/content/92/
思路
a*b = a 进行加,执行b次。乘法快速幂
AC代码
#include <iostream>
using namespace std;
int main(){
long long a,b,p;
cin >> a >>b >> p;
long long res = 0; // long long 表示9*10^18
while (b){
if (b &1) res = (a+res)%p; //两个10^18相加结果不会溢出,如果相乘就无法存储
b >>= 1;
a = a*2%p;
}
cout << res <<endl;
return 0;
}