TYVJ CONTEST799 SUM SUM
题目大意
暂无
题目解法
暂无
RTFC
#include <cstdio>
const int mod = 1000000007;
int fast_pow(long long x, long long y)
{
long long ans = 1;
while (y)
{
if (y & 1)
ans = (ans * x) % mod;
x = (x * x) % mod;
y >>= 1;
}
return ans;
}
int arrsum(int n, int k)
{
if (n == 1) return 1;
long long ans = arrsum(n >> 1, k);
ans = ans + (fast_pow(k, n >> 1) * ans) % mod;
if (n & 1) ans += fast_pow(k, n - 1);
return ans % mod;
}
int main()
{
freopen("sum.in", "r", stdin);
freopen("sum.out", "w", stdout);
int n, m, ans = 0;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
ans = (ans + arrsum(m + 1, i) - 1) % mod;
printf("%d", ans);
return 0;
}