【题解】P1806
P1806
题目
题目描述:
路人甲准备跑 圈来锻炼自己的身体,他准备分多次($\gt1$)跑完,每次都跑正整数圈,然后休息下再继续跑。
为了有效地提高自己的体能,他决定每次跑的圈数都必须比上次跑的多。
可以假设他刚开始跑了 圈,那么请问他可以有多少种跑完这 圈的方案?
输入格式:
一行一个整数,代表 。
输出格式:
一个整数表示跑完这 圈的方案数。
数据范围与说明:
数据规模与约定
对于 的数据,保证 。
输入输出样例 #1
输入:
212
输出:
995645335
代码
#include <bits/stdc++.h>
using namespace std;
int n;
long long dp[505];
int main(){
cin>>n;
dp[0]=1;
for(int i=1;i<=n;i++){
for(int j=n;j>=i;j--){
dp[j]+=dp[j-i];
}
}
cout<<dp[n]-1;
return 0;
}