#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=b-1;i>=a;i--)
typedef long long ll;
const int maxn=40;
ll dp[maxn][maxn];
ll C(ll n,ll m){//爆了int,绝望.jpg,多校忘了取模,简直是条咸鱼了
ll ans=1;
for(int i=1;i<=m;i++){
ans=ans*(n-i+1)/i;
}
return ans;
}
ll dfs(int n,int m){
ll& ans=dp[n][m];
if(m==1)return ans=1;
if(ans!=-1)return ans;
ans=0;
for(int i=0;i*m<=n;i++){
ans+=C(dfs(m,m-1)+i-1,i)*dfs(n-i*m,m-1);
}
return ans;
}
int main(){
int n;
while(scanf("%d",&n)==1&&n){
memset(dp,-1,sizeof(dp));
dp[1][1]=1;
if(n==1){
printf("1\n");
continue;
}
ll ans=dfs(n,n-1);
printf("%lld\n",2ll*ans);
}
return 0;
}
Series-Parallel Networks UVA - 10253
猜你喜欢
转载自blog.csdn.net/qq_36424540/article/details/81673856
今日推荐
周排行