题目传送门
详见代码
关于我提交了三次这件事
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX_N=500+50;
ll n,dp[MAX_N];
int main(){
scanf("%lld",&n);
dp[0]=1;
for(int i=1;i<=n;i++)
for(int j=n;j>=i;j--) dp[j]+=dp[j-i];
printf("%lld",dp[n]-1);
return 0;
}