coding - 求和为n连续正数序列
2013-07-15 19:48
274 查看
题目描述:
输入一个正数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 PrintSequence(int begin, int end);
void FindContinueSeq(int n)
{
if (n < 3)
return ;
int begin = 1;
int end = 2;
int sum = begin + end;
int mid = (begin + n) >> 1;
while (begin < mid)
{
if (sum == n)
PrintSequence(begin, end);
//
while (sum > n)
{
sum -= begin;
begin++;
if (sum == n)
PrintSequence(begin, end);
}
//
end++;
sum += end;
}
}
void PrintSequence(int begin, int end)
{
for(int i = begin; i <= end; i++)
{
cout << i << " ";
}
cout << endl;
}
int main()
{
FindContinueSeq(15);
return 0;
}
输入一个正数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 PrintSequence(int begin, int end);
void FindContinueSeq(int n)
{
if (n < 3)
return ;
int begin = 1;
int end = 2;
int sum = begin + end;
int mid = (begin + n) >> 1;
while (begin < mid)
{
if (sum == n)
PrintSequence(begin, end);
//
while (sum > n)
{
sum -= begin;
begin++;
if (sum == n)
PrintSequence(begin, end);
}
//
end++;
sum += end;
}
}
void PrintSequence(int begin, int end)
{
for(int i = begin; i <= end; i++)
{
cout << i << " ";
}
cout << endl;
}
int main()
{
FindContinueSeq(15);
return 0;
}
相关文章推荐
- 求和为n连续正数序列 C++实现
- 求和为s的连续正数序列
- 求和为s的连续正数序列
- 和为定值的两个、三个、多个、连续正数序列
- 剑指offer-和为S的连续正数序列
- 题目1354:和为S的连续正数序列-九度
- 剑指offer 41 - 和为s的两个数字VS为s的连续正数序列
- 剑指offer41:和为s的两个数字VS和为s的连续正数序列
- 51.和为n连续正数序列
- 第五十一题 和为n 连续正数序列
- 打印和为s的连续正数序列
- 程序员面试题精选(26):和为n连续正数序列
- Python :连续正数序列
- 和为n的连续正数序列
- 简单题练习——和为S的连续正数序列
- 剑指Offer–041-和为S的连续正数序列
- 输入一个正数n,输出所有和为n连续正数序列。
- 输入一个正数s,打印出所有和为s的连续正数序列(至少包含两个数)
- 和为n连续正数序列
- 剑指offer 面试题41 和为 s 的两个数字 VS 和为 s 的连续正数序列