51.和为 n 连续正数序列(数组)。
题目:输入一个正数 n,输出所有和为 n 连续正数序列。
例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、 4- 6 和 7-8。
分析:这是网易的一道面试题。

一道简单的小题

/*
51.和为 n 连续正数序列(数组)。
题目:输入一个正数 n,输出所有和为 n 连续正数序列。
例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、 4- 6 和 7-8。
分析:这是网易的一道面试题。
*/ #include <stdio.h> //思路:设连续数字中首个数字为 s 连续数字个数为 l
//则这些数字的和为 s*l + l*(l-1)/2
void find(int n)
{
int l;
int s;
for(s = ; s * + <= n; s++) //首个数字循环
{
for(l = ; s * l + (l *(l - ))/ <= n; l++)
{
if(s * l + (l *(l - ))/ == n)
{
for(int i = s; i < l + s; i++)
{
printf("%d ", i);
}
printf("\n");
}
}
}
} int main()
{
find();
return ;
}

网上看到一个思路更好的, 其实没有必要对s循环的,根据l直接算s就可以了。

http://blog.csdn.net/wumuzi520/article/details/8046201

那么

a1+a2+...+ak=n

因为连续,所以

a1+(a1+1)+(a1+2)+...+(a1+k-1)=n

k*a1+k(k-1)/2=n

这样就可以求得

a1=(n-k(k-1)/2)/k

a1即为连续数中的最小值,只有在a1为整数的情况下才会符合要求,即

(n-k(k-1)/2)%k==0

时才符合要求。

对符合要求的a1连续打印k个递增(公差为1)的值即可。

#include <iostream>
#include <cmath>
using namespace std; void Sequence1(int n)
{
int M = (sqrt(*n+)-)/;
for(int i = ; i <= M; i++)
{
if((n-(i-)*i/)%i == ) //!!!!!注意学习这里
{
int nMin = (n-(i-)*i/)/i;
for(int j = ; j < i; j++)
{
cout << nMin++ << " ";
}
cout << endl;
}
}
}

【编程题目】和为 n 连续正数序列的更多相关文章

  1. (剑指Offer)面试题41:和为s的连续正数序列

    题目: 输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数).例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1-5,,4-6和7-8. 思路: ...

  2. 【剑指Offer面试编程题】题目1354:和为S的连续正数序列--九度OJ

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  3. 九度oj 题目1354:和为S的连续正数序列

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  4. 和为S的两个数字VS和为s的连续正数序列

    题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 例如输入数组1.2.4.7.11.15和数字15.由于4+11=15, ...

  5. 【剑指Offer】41、和为S的连续正数序列

      题目描述:   小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数). ...

  6. LeetCode 题解 | 面试题57 - II. 和为s的连续正数序列

    题目描述 面试题57 - II. 和为s的连续正数序列 难度简单37收藏分享切换为英文关注反馈 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内 ...

  7. 剑指offer系列46---和为s的连续正数序列

    [题目]输出所有和为S的连续正数序列.序列为:1,2,3,4,5,6,7,8................ * 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 package com.e ...

  8. 【面试题041】和为s的两个数字VS和为s的连续正数序列

    [面试题041]和为s的两个数字VS和为s的连续正数序列 题目一:     输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. ...

  9. 网易面试题:和为n连续正数序列

    题目: 输入一个正数n,输出所有和为n连续正数序列.例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. 继续做些题目,看到这是网易面试题,于是 ...

随机推荐

  1. Eclipse中使用tomcat 8服务器初级教程

    Eclipse中使用tomcat容器时,经常遇到的问题是启动不成功,输入localhost:8080报404,本文就是教大家破解这个问题.(不过这是很初级的问题了,大牛勿喷) 步骤 1 Window- ...

  2. AngularJS 国际化——Angular-translate

    对于一个用户群面向全球的的应用来说,不得不考虑国际化的问题.当然,即便是刚刚起步的小应用,如果有心搞大,也应该提前设计国际化的方案. 本篇讲述使用AngularJS构建的应用的简单国际化方案,准确的说 ...

  3. A funny story in regard to a linux newbie

    ZZ from here :  ask what kernel ring buffer is A few days ago I started thinking that my linux educa ...

  4. nyoj 364 田忌赛马(贪心)

    田忌赛马 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Here is a famous story in Chinese history. "That ...

  5. POJ 3292 Semi-prime H-numbers

    类似素数筛... Semi-prime H-numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6873 Accept ...

  6. PHP截取中文无乱码函数——cutstr

    转载:http://blog.sina.com.cn/s/blog_694c144f010179wj.html 真正好用的PHP截取中文无乱码函数——cutstr (2012-07-09 11:17: ...

  7. mongoDB- - 2 增、删、改 操作

    1.创建数据库 语法:use database 说明:如果database不存在,就会创建database:如果存在就会切换到database 2.查看所有数据库 语法:show dbs; 说明:如果 ...

  8. java之Timer

    一.Java2的开发包中提供了一种很好使用的线程功能:你可以使用这些类创建后台进程,让其在等待一段规定的时间后执行,或者让其每隔一段时间执行.你也可以用Thread来完成,但利用Timer与Timer ...

  9. fzu2188 状压dp

    G - Simple String Problem Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  10. java检测文件内是否包含指定内容

    package com.test; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.File ...