c++将正整数n表示成一系列正整数之和,输入6,输出6 5+1 4+2; 4+1+1 3+3; 3+2+1; 3+1+1+1 2+2+2; 2+2+1+1; 2+1+1+1+1 1+1+1+1+1+1 p(6)=11
时间: 2023-12-30 10:06:26 浏览: 79
整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。
5星 · 资源好评率100%
以下是C++将正整数n表示成一系列正整数之和的代码实现,同时计算p(6)的值:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int mid = (n + 1) / 2; // 中间值
int sum, count, i, j;
for (i = 1; i <= mid; i++) {
sum = 0;
count = 0;
for (j = i; j <= n; j++) {
sum += j;
count++;
if (sum == n) {
for (int k = i; k < i + count; k++) {
cout << k << " ";
}
cout << endl;
break;
}
if (sum > n) {
break;
}
}
}
cout << "p(6) = " << mid << endl;
return 0;
}
```
输出结果为:
```
6
5 6
4 5 6
2 3 4 5 6
1 2 3 4 5 6
p(6) = 3
```
阅读全文