A Boring Question
.
.
这题可以找规律(也可以证明这个规律),即m^0+m^1+…+m^n。用等差数列公式就可以求了,由于涉及除法,所以要用逆元。
.
.
#include <cstdio>
const long long mo = 1000000007;
long long m, n;
long long mypow(long long x, long long n)
{
long long res = 1;
while (n > 0)
{
if (n & 1) res = res * x % mo;
x = x * x % mo;
n >>= 1;
}
return res;
}
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
scanf("%I64d %I64d", &n, &m);
long long ans = 0;
ans = mypow(m, n + 1);
ans = (ans + mo - 1) % mo;
ans = (ans * mypow(m - 1, mo - 2)) % mo;
printf("%I64d\n", ans);
}
}