题意
按题目给的要求算出所有的结果之和。
思路
打表发现是等比数列。。。
ans=mn+1−1m−1
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
ll t, n, m, ans;
ll modMul(ll a, ll b, ll mod) {
ll ans = 0;
for(; b > 0; b >>= 1) {
if (b & 1) {
ans = (ans + a) % mod;
}
a = (a << 1) % mod;
}
return ans;
}
ll modPow(ll a, ll n, ll mod) {
ll ans = 1;
for(; n > 0; n >>= 1) {
if(n & 1) {
ans = modMul(ans, a, mod);
}
a = modMul(a, a, mod);
}
return ans;
};
ll modInv(ll a, ll mod) {
return modPow(a, mod - 2, mod);
}
int main() {
cin >> t;
while(t--) {
cin >> n >> m;
ans = modPow(m, n + 1, mod) - 1;
ans = modMul(ans, modInv(m - 1, mod), mod);
cout << ans << endl;
}
return 0;
}