记
f[k][i]
f
[
k
]
[
i
]
表示k维空间i个球最多把空间分为多少部分。
我们有
f[k][i]=f[k][i−1]+f[k−1][i−1],
f
[
k
]
[
i
]
=
f
[
k
]
[
i
−
1
]
+
f
[
k
−
1
]
[
i
−
1
]
,
f[k][0]=1,f[1][i]=2i
f
[
k
]
[
0
]
=
1
,
f
[
1
]
[
i
]
=
2
i
证明见portal
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
inline char gc(){
static char buf[1<<16],*S,*T;
if(S==T){T=(S=buf)+fread(buf,1,1<<16,stdin);if(T==S) return EOF;}
return *S++;
}
inline int read(){
int x=0,f=1;char ch=gc();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=gc();}
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=gc();
return x*f;
}
int m,n;ll f[16][110];
int main(){
// freopen("a.in","r",stdin);
m=read();n=read();
for(int i=1;i<=n;++i) f[i][0]=1;
for(int i=1;i<=m;++i) f[1][i]=i<<1;
for(int k=2;k<=n;++k)
for(int i=1;i<=m;++i)
f[k][i]=f[k][i-1]+f[k-1][i-1];
printf("%lld\n",f[n][m]);
return 0;
}