和为S的连续正数序列
来源:互联网 发布:离散傅里叶矩阵 编辑:程序博客网 时间:2024/05/01 20:54
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
感想:这题我之前的想法是用sum除以i=sqrt(sum),……1;以商为中心两边扩展。但是被自己写的逻辑绕晕了,参考了一下剑指的写法。简单多了。但是时间复杂度不小。
//和为S的连续正数序列#include <iostream>#include <vector>using namespace std;int count(int small,int big){int sum=0;while(small<=big){sum+=small;small++;}return sum;}vector<vector<int> > FindContinuousSequence(int sum) { vector<vector<int>> v2d; vector<int> v;if(sum==0) return v2d;int small=1,big=2;while(small<=(1+sum)/2){int sum_temp=count(small,big);if(sum_temp<sum)big++;else if(sum_temp>sum)small++;else{for(int i=small;i<=big;i++)v.push_back(i);v2d.push_back(v);v.clear();big++;}}return v2d;}void main(){vector<vector<int>> v2d;v2d=FindContinuousSequence(2);for(int i=0;i<v2d.size();i++){for(int j=0;j<v2d[i].size();j++)cout<<v2d[i][j]<<' ';cout<<endl;}system("pause");}
0 0
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为s的连续正数序列
- 和为s的连续正数序列
- 和为s的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为s的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- 和为S的连续正数序列
- JavaScript、 jQuery行拖拽、排序
- 编程之美2.20 程序理解和时间分析
- GridView 设置其高度属性为 wrap_content
- 八大种必知排序算法(二) 选择排序,插入排序,希尔算法
- Windows Event Trace 编程(TDH.lib)
- 和为S的连续正数序列
- Android调试中遇到的bug
- Java写文件的方式:FileOutputStream vs. FileWriter
- mysql查询今天、昨天、7天、近30天、本月、上一月 数据
- C++类内存分布
- 最好的epoll讲解
- JOS 系统中第一个用户进程的建立和运行
- 结果集(ResultSet)用法
- oracle 的 BLOCK CHANGE TRACKING