第二天叫醒我的不是闹钟,是梦想!
一个正整数n可以表示成若干个正整数之和,形如:n=n1+n2+…+nk,其中 n1≥n2≥…≥nk,k≥1 。
我们将这样的一种表示称为正整数n的一种划分。
现在给定一个正整数n,请你求出n共有多少种不同的划分方法。
输入格式 共一行,包含一个整数n。
输出格式 共一行,包含一个整数,表示总划分数量。
由于答案可能很大,输出结果请对109+7取模。
数据范围 1≤n≤1000 输入样例: 5 输出样例: 7
#include
<bits
/stdc
++.h
>
using namespace std
;
const int
N=1005;
const int
MOD=1e9+7;
int f
[N][N];
int
main()
{
int n
;
cin
>>n
;
f
[0][0]=1;
for(int i
=1;i
<=n
;i
++)
for(int j
=1;j
<=i
;j
++)
f
[i
][j
]=(f
[i
-1][j
-1]+f
[i
-j
][j
])%MOD;
int res
=0;
for(int i
=1;i
<=n
;i
++) res
=(res
+f
[n
][i
])%MOD;
cout
<<res
<<endl
;
}