编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
2016-08-01 12:12
465 查看
编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
思路:对于n个连续正整数,若开始的数为m,则其和sum = n*m + n * (n-1) / 2;因此可以用两个for循环遍历实现
/************************************************************************/
/* 题目要求:输入一个正整数,若该数能用几个连续正整数之和表示, */
/* 则输出所有可能的正整数序列 */
/************************************************************************/
#include <iostream>
#include <string>
using namespace std;
void SucessNumbSum(unsigned int sum)
{
unsigned int startNumb; //连续正整数之和中的起始数
unsigned int count; //连续正整数的个数
bool flag = false;
for(startNumb = 1; startNumb < (sum + 1) / 2; ++startNumb)
{
for(count = 1; count < (sum + 1) / 2; ++count)
{
if(((star
4000
tNumb * count) + (count * (count -1)) / 2) == sum)
{
if(false == flag)
cout<< "the succession positive integer are: "<<endl;
for(unsigned int i = 0;i < count; i++)
cout<< startNumb + i <<" ";
cout<<endl<<endl;
flag = true;
}
}
}
if(false == flag)
{
cout<<"No Succession positive integer beenn found" <<endl;
}
}
int main()
{
unsigned int number;
cout<<"please enter a positive integer"<<endl;
cin>>number;
SucessNumbSum(number);
return 0;
}
思路:对于n个连续正整数,若开始的数为m,则其和sum = n*m + n * (n-1) / 2;因此可以用两个for循环遍历实现
/************************************************************************/
/* 题目要求:输入一个正整数,若该数能用几个连续正整数之和表示, */
/* 则输出所有可能的正整数序列 */
/************************************************************************/
#include <iostream>
#include <string>
using namespace std;
void SucessNumbSum(unsigned int sum)
{
unsigned int startNumb; //连续正整数之和中的起始数
unsigned int count; //连续正整数的个数
bool flag = false;
for(startNumb = 1; startNumb < (sum + 1) / 2; ++startNumb)
{
for(count = 1; count < (sum + 1) / 2; ++count)
{
if(((star
4000
tNumb * count) + (count * (count -1)) / 2) == sum)
{
if(false == flag)
cout<< "the succession positive integer are: "<<endl;
for(unsigned int i = 0;i < count; i++)
cout<< startNumb + i <<" ";
cout<<endl<<endl;
flag = true;
}
}
}
if(false == flag)
{
cout<<"No Succession positive integer beenn found" <<endl;
}
}
int main()
{
unsigned int number;
cout<<"please enter a positive integer"<<endl;
cin>>number;
SucessNumbSum(number);
return 0;
}
相关文章推荐
- 网易笔试题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 网易笔试题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 一个正整数有可能可以被表示为 m(m>=2) 个连续正整数之和,编写一个程序,输入一个正整数,然后找出符合这种要求的所有 连续正整数序列,若不存在这种序列,则打印None。
- 一个正整数有可能可以表示为n(n>=2)个连续的正整数之和,如:15=1+2+3+4+5,15=4+5+6,15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
- C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数
- 输入一个正数n,输出所有和为n连续正整数序列
- 输入一个整数,输出所有可能的整数序列,使得序列中的整数之和等于输入的整数
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
- C++初学者---根据输入的任何一个正整数,输出可能被表示的连续正整数
- java实现输入一个正整数n,输出全部连续正整数相加后等于n的所有序列。
- 输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。
- 输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序
- 输入一个正数n,输出所有和为n 连续正数序列
- 写正确程序需要注意的地方:输入一个正数n,输出所有和为n连续正数序列。
- 将一个正整数n,拆分成连续的自然数之和,输出所有可能的情况
- 【算法】输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 输入一个正数n,输出所有和为n 连续正数序列
- 输入一个正数n,输出所有和为n 连续正数序列