爱喝「肥宅快乐水」的班长
太菜了==,签到题看半天不会===
可以用插板法
写了个dp
一共需要买 $n$ 瓶饮料。而在云闪付在线商城上,一共有 $m$ 种不同的饮料(包括「肥宅快乐水」,并假设云闪付在线商城上的每种饮料的购买数量都没有限制)。由于码队的弟弟喜欢喝「肥宅快乐水」,所以这两名同学决定至少要买一瓶「肥宅快乐水」。
这样看来,饮料购买的方案实在是太多了!两位同学突发奇想,想让你帮忙计算:总共有多少种购买饮料的方案。(答案对 $10^9 + 7$ 取模,同种饮料都是一样的,不作区分。)
#include<bits/stdc++.h> typedef long long ll; #define P pair<ll,ll> #define sc(x) scanf("%lld",&x); using namespace std; #define endl '\n' #define read(A) for(int i=0;i<n;i++) scanf("%lld",&A[i]); #define maxn 100005 int N,T; const ll mod=1e9+7; ll dp[1005][1005]; ll pre[1005]; void init() { for(int i=1; i<=1000; i++) dp[i][1]=1,pre[i]=(pre[i-1]+dp[i][1])%mod; for(int j=2;j<=1000;j++){ for(int i=1;i<=1000;i++){ dp[i][j]=pre[i]; pre[i]=(pre[i-1]+dp[i][j])%mod; } } } int main() { init(); sc(T); ll n,m; while(T--){ sc(n);sc(m); cout<<dp[n][m]<<'\n'; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步