1、组合+逆元,水题。
2、也可以找规律,发现杨辉三角(我用的数学推出来的)。
3、dp打表后找规律(还没写)
数学:
#include<cstdio>
#include<iostream>
using namespace std;
using LL=long long;
const int mod=1e9+7;
const int MAXN=2e5+1;
int n,m;
LL fac[MAXN]={1,1};
LL inv[MAXN]={1,1};
LL f[MAXN]={1,1};
LL c(LL a,LL b) { //公式
return fac[a]*inv[b]%mod*inv[a-b]%mod;
}
int main()
{
for(int i=2;i<MAXN;i++) {
fac[i]=fac[i-1]*i%mod;
f[i]=(mod-mod/i)*f[mod%i]%mod;
inv[i]=inv[i-1]*f[i]%mod;
}
while(scanf("%d%d",&n,&m)==2) {
cout<<(LL)c(m+n-4,m-2)<<endl;
}
return 0;
}