#include <iostream>
using namespace std;
//打印序列
void print(int a,int b)
{
for(int i=a; i<=b; ++i)
{
cout << i <<" ";
}
cout << endl;
}
//求和为n的连续正整数序列
void bxy(int n)
{
if(n<3)
{
return ;
}
//初始化
int small = 1;
int big = 2;
int middle = (1+n)/2;
int sum = small+big;
//序列中的最小值不可能大于n的一半。
while(small < middle)
{
//找到序列
if(sum == n)
{
print(small,big);
}
//如果当前序列的和大于n,则把序列中最小的数剪掉。
while(sum > n)
{
sum = sum - small;
small++;
//随时判断是否符合要求了。
if(sum == n)
{
print(small,big);
}
}
//否则肯定是sum<n了,那就加上个大数。
big++;
sum = sum + big;
}
}
void main()
{
bxy(15);
}
【100题】求 和为n的 正整数序列
最新推荐文章于 2023-12-23 20:18:03 发布