64位整数乘法
时间限制:1秒 内存限制:32M
题目描述
求 a 乘 b 对 p 取模的值。
输入描述
第一行输入整数a,第二行输入整数b,第三行输入整数p。
输出描述
输出一个整数,表示a*b mod p的值。
样例
输入
3
4
5
输出
2
提示
1≤a,b,p≤10^18
注意要用long long类型,int会爆
#include<iostream>
using namespace std;
typedef long long ll;
ll power(ll a,ll b,ll p) {
ll ans=0;
while(b){
if(b&1){
ans=(ans+a)%p;
}
a=(a+a)%p;
b>>=1;
}
return ans;
}
int main() {
ll b,q,k;
cin>>b>>q>>k;
ll ans=power(b,q,k);
cout<<ans;
return 0;
}