题目描述:

小明很喜欢数学,有一天他在做数学作业时,要求计算出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
#

如果用遍历的话肯定会超时,这个题应该用数学公式求解假设有m个连续的数,则求和(x ~ x +m -1) = n可得到x 和n , m的关系,枚举m,可得解因为 x > 0 , 可得m < (sqrt(1 + 8 * n) + 1)/2;代码如下
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 #include <cmath>
 7
 8 using namespace std;
 9 typedef long long ll;
10
11 int main(int argc, char const *argv[])
12 {
13     int n, k;
14     while(scanf("%d",&n) != EOF && n >= 0) {
15         bool isFind = false;
16         int ta = 2 * n;
17         int m = (sqrt(1 + 8 * n) + 1)/2;
18         //int m = sqrt(2.*n)+1;
19         for(int i = m; i >= 2; i--) {
20             if(ta % i != 0) {
21                 continue;
22             }
23
24             int tb = ta/i + 1 - i;
25             if(tb <= 0) {
26                 continue;
27             }
28             if(tb & 1) {
29                 continue;
30             }
31             int x = tb/2;
32
33             printf("%d",x);
34             for(int p = 1; p < i; p++) {
35                 printf(" %d",x+p);
36             }
37             puts("");
38             isFind = true;
39         }
40         if(!isFind) {
41             puts("Pity!");
42         }
43
44         puts("#");
45     }
46     return 0;
47 }

转载于:https://www.cnblogs.com/jasonJie/p/5804307.html

九度oj 题目1354:和为S的连续正数序列相关推荐

  1. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  2. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  3. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

  4. 九度OJ 题目1011:最大连续子序列

    题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大 ...

  5. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

  6. 九度oj 题目1411:转圈

    题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...

  7. 【WA】九度OJ题目1435:迷瘴

    题目描述: 通过悬崖的yifenfei,又面临着幽谷的考验-- 幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅.由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死. 幸好y ...

  8. 九度oj 题目1376:最近零子序列

    题目描述: 给定一个整数序列,你会求最大子串和吗?几乎所有的数据结构与算法都会描述求最大子串和的算法.今天让大家来算算最近0子串和,即整数序列中最接近0的连续子串和.例如,整数序列6, -4, 5, ...

  9. 九度oj 题目1078:二叉树遍历

    题目1078:二叉树遍历 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5326 解决:3174 题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历 ...

最新文章

  1. 论新时代软件测试人员的工作之道(三)让Code Review常态化
  2. 某阿里程序员女朋友吐槽男友整天玩失踪!早晨问候一声,晚上十一点才回信息!中间完全消失!阿里加班真的这么恐怖吗?...
  3. 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
  4. 与时间相关的java源码_Java 调整日期和时间
  5. 获取windows所有端口
  6. Python文本转化语音模块大比拼,看看青铜与王者的差别!
  7. ComponentArt控件分析之ComboBox(2)
  8. java notifyall 唤醒顺序_Java线程中的notifyAll唤醒操作(推荐)
  9. 二进制数据(Image类型)从一个表存入另一个表
  10. 物联网时代的技术迷雾
  11. SSM系类代码:org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer
  12. 米家扫地机器人是石头代工_石头扫地机器人T4全面评测 支持软件虚拟墙,清扫更高效...
  13. WHQL之无需HLK结果就可获得微软驱动数字签名+Cannot specify [ClassInstall32] section解决
  14. matlab 水文频率曲线,水文频率曲线matlab
  15. 分享使用谷歌Colab 常用小tips, 玩转Google Colab
  16. 如何对计算机进行远程连接,如何实现远程连接 远程连接命令介绍
  17. 衣服尺寸里面A,B是什么意思
  18. Window取消快捷方式箭头(脚本方式)
  19. Manifest is not valid JSON. Line: 1, column: 1 项目打包报错解决方法
  20. delphi 整理的常用函数

热门文章

  1. 2018python培训-Python学习之路—2018/7/2
  2. python画圣诞树代码-圣诞节!教你用Python画棵圣诞树
  3. python 自动化-利用Python语言实现实验室自动化
  4. python写程序求1-3+5-7+...-99+101的值-16-Python3-高价函数-提升效率必备
  5. python画轨迹曲线-matplotlib绘制随机行走轨迹图
  6. 爬虫python需要什么软件-python大神们!都在用什么爬虫工具呢?
  7. 为什么电脑下载python很慢-Python运行速度慢你知道这是为什么吗?
  8. python哪一版好用-Python最好用的编辑器是哪款?北京老男孩教育
  9. 简明python教程购买-简明Python3教程 6.基础
  10. openvidu部署