100题_26 和为n连续正数序列
时间:2011-03-15 来源:小橋流水
输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
这题还比较简单,从头开始,少了就往后加,多了就往前减。代码如下:
#include <iostream>
using namespace std;
void print(const int &start, const int &end)
{
cout<<"=";
for (int i = start; i <= end; i++)
{
cout<<i;
if (end != i)
cout<<'+';
}
}
void printConSum(int n)
{
cout<<n;
int start = 1, sum = 0;
for (int i = 1; i <= (n + 1) / 2; i ++)
{
sum += i;
if (sum == n)
{
print(start, i);
sum -= start++;
}
while (sum > n)
{
sum -= start++;
}
if (sum == n)
{
print(start, i);
sum -= start++;
}
}
cout<<endl;
}
int main()
{
printConSum(15);
return 0;
}
相关阅读 更多 +
排行榜 更多 +