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;
|
||
}
|