#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define inf 0x3f3f3f3f
const int N=1e6+5,mod=1e9+7;
int n,k;
int sum[N],cnt[N];
void solve(){
cin>>n>>k;
cnt[1]=sum[1]=1;
for(int i=2;i<=n;i++){
cnt[i]=(cnt[i-1]*k)%mod;
sum[i]=(sum[i-1]+cnt[i])%mod;
}
int ans=0;
for(int i=2;i<=n;i++){
ans+=cnt[i]%mod*(sum[n]+mod-sum[n-i+1])%mod*(sum[n-i+1]);
ans%=mod;
}
cout<<ans;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int tt=1;
// cin>>tt;
while(tt--) solve();
return 0;
}
小y的树(前缀和&思维)---牛客练习赛96-B
最新推荐文章于 2024-11-06 11:05:01 发布
本文介绍了一个使用C++编写的算法,解决了一个涉及计数和模运算的问题,计算给定范围内数字的特定模式组合数量。
摘要由CSDN通过智能技术生成