问题描述:
输出给定数字的连续数字形式,例:15 表示为
1+2+3+4+5,4+5+6,7+8 。
算法思想:
连续的数字形式有上界和下界,上下界连续数字和小于给定数字则上界自增、大于给定数字则下界前移。
源码实现:
#include <iostream>
using namespace std;
void FindSum(int num)
{
if(num<3)
return;
int small = 1;
int big = 2;
int mid = (num+1)/2;
int sum = small+big;
while(small<=mid)
{
if(sum == num)
{
int tmp = small;
for(;tmp<=big;tmp++)
cout<<tmp<<" ";
cout<<endl;
sum = sum-small;
small++;
continue;
}
if(sum<num)
{
big++;
sum = sum+big;
}
else
{
sum = sum-small;
small++;
}
}
}
int main()
{
int n;
cin>>n;
FindSum(n);
return 0;
}