给定一个自然数N,要求把N拆分成@[*若干*]个正整数相加的形式,参与加法运算的数可以重复。
求拆分的方案数 mod 2147483648的结果。
输入格式
一个自然数N。
输出格式
输入一个整数,表示结果。
数据范围
1≤N≤4000
输入样例:
7
输出样例:
14
因为若干所以必须是拆分成多个
完全背包求方案数,因为是恰好装满,因此初始化的当装0的时候为一,其他都是0
代码:
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
using namespace std;
define mod 2147483648
long long d[4005];
int main()
{
int n;
cin >>n;
d[0]=1;
for(int i = 1; i < n; i)
{
for(int j = i; j <= n; j)
{
d[j] = (d[j] + d[j - i])% mod;
}
}
cout << d[n] << endl;
return 0;
}