29 lines
518 B
C++
29 lines
518 B
C++
|
|
#include <iostream>
|
|||
|
|
using namespace std;
|
|||
|
|
typedef long long LL;
|
|||
|
|
const int mod = 1e9 + 7;
|
|||
|
|
/*
|
|||
|
|
测试用例:
|
|||
|
|
10000000 10000000
|
|||
|
|
|
|||
|
|
答案:
|
|||
|
|
999300007
|
|||
|
|
*/
|
|||
|
|
//快速乘,计算a*b%mod
|
|||
|
|
LL ksc(LL a, LL b) {
|
|||
|
|
LL ans = 0;
|
|||
|
|
a %= mod;
|
|||
|
|
while (b) {
|
|||
|
|
if (b & 1) ans = (ans + a) % mod;
|
|||
|
|
b >>= 1; //位运算,右移1位,相当于除以2
|
|||
|
|
a = (a + a) % mod;
|
|||
|
|
}
|
|||
|
|
return ans;
|
|||
|
|
}
|
|||
|
|
int main() {
|
|||
|
|
LL a, b;
|
|||
|
|
cin >> a >> b;
|
|||
|
|
printf("%lld\n", ksc(a, b));
|
|||
|
|
return 0;
|
|||
|
|
}
|