题目描述:
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?
Good Luck!
输入:
输入有多组数据。
每组数据仅包括1个整数S(S<=1,000,000)。如果S为负数时,则结束输入。
输出:
对应每组数据,若不存在和为S的连续正数序列,则输出“Pity!”;否则,按照开始数字从小到大的顺序,输出所有和为S的连续正数序列。每组数据末尾以“#”号结束。
样例输入:
4
5
100
-1
样例输出:
Pity!
#
2 3
#
9 10 11 12 13 14 15 16
18 19 20 21 22
#
【解析】
【代码】
/*********************************
* 日期:2013-11-29
* 作者:SJF0115
* 题号: 题目1354:和为S的连续正数序列
* 来源:http://ac.jobdu.com/problem.php?pid=1354
* 结果:AC
* 来源:剑指Offer
* 总结:
**********************************/
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int FindSequence(int n){
//初始化
int end = (n + 1) / 2;
int small = 1;
int big = 2;
int isFound = 0;
int curSum = small + big;
while(small < big && big <= end){
//当前值等于给定值,打印序列
if(curSum == n){
isFound = 1;
//打印
for(int i = small;i <= big;i++){
if(i == big){
printf("%d\n",i);
}
else{
printf("%d ",i);
}
}
curSum -= small;
small++;
}
//当前值大于给定值,需要弃掉一个小值
else if(curSum > n){
curSum -= small;
small ++;
}
//当前值小于给定值,需要加上一个大值
else{
big ++;
curSum += big;
}
}//while
return isFound;
}
int main() {
int i,n,m,num1,num2;
while(scanf("%d",&n) != EOF && n >= 0){
int result = FindSequence(n);
//输出
if(result == 0){
printf("Pity!\n");
}
printf("#\n");
}//while
return 0;
}
分享到:
相关推荐
1、设定左右指针left/right,分别指向1和2,维护左右指针间的窗口和sum 2、如果sum等于target值,将左右指针间的数字作为一个数组加入最终结果
剑指offer(C++)1
剑指offer刷题笔记(一),大概完成40多道题,语言c++,python,java
提供剑指offer 名企面试官精讲典型编程题和一套编程题的源代码。
牛客网剑指offer——Java题解.pdf
剑指offer例题代码 不想看书可以直接看代码 学完了找工作、机试、考研都不会有问题 剑指offer例题代码 不想看书可以直接看代码 学完了找工作、机试、考研都不会有问题 剑指offer例题代码 不想看书可以直接看代码 ...
《剑指Offer》 1. 赋值运算函数 2. 单例设计模式 3. 二维数组中查找目标值 4. 替换字符串中的空格 5. 从尾到头打印链表 6. 由前序和中序遍历重建二叉树 7. 用两个栈实现队列 8. 求旋转数组的最小数字 9. ...
# Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...
剑指offer的Java代码全套加文字说明
《剑指Offer》题目及代码,基于java语言实现;
此程序为剑指offer程序,便于找工作的小伙伴的复习~
剑指offer
最全的《剑指offer》Java版代码实现,保证正确性,全都在OJ上测试AC了。
因为剑指offer上的面试题有些写的有错误,这是实现了剑指offer中面试题的代码
包含剑指offer全部代码,用VS打开,直接可以运行所有代码
剑指offer,对于算法初学者和求职者是个不错的选择。
java版剑指Offer,主要用于找工作的资料,数据结构的java语言实现
剑指offer源代码解析剑指offer源代码解析剑指offer源代码解析
剑指 offer 题解.pdf
剑指offer剑指offer