这周纯纯是数学专场啊。(哈哈)
首先,观察后发现 是等比数列求和的结果;
所以 ; 而右端式子中每一项都可利用它的前一项来计算,;
综上, 写个递推计算就行了;C++ 代码如下:
#include <iostream>
using namespace std;
typedef long long LL;
const int MOD = 100000007;
int main()
{
LL m, k;
cin >> m >> k;
LL res = 1;
for (int i = 0; i < k; i ++ )
{
res = res * m % MOD;
m = m * m % MOD;
}
cout << res << endl;
return 0;
}