整数划分

mac2026-03-27  5

第二天叫醒我的不是闹钟,是梦想!

一个正整数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; }
最新回复(0)