博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易面试题:和为n连续正数序列
阅读量:6912 次
发布时间:2019-06-27

本文共 1893 字,大约阅读时间需要 6 分钟。

题目:

  输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。

  继续做些题目,看到这是网易面试题,于是又认认真真自己思考着做了。




 

解决:

  结果一定是2个相连的数、3个相连的数、4个、5个等等。那么可以把这个数n除以i(i为2,3,4...代表相连的数的个数),得到的这些相邻的数的大概平均值,如当 n = 15、i = 2 时,n / i = 7,这代表如果有两个相邻的数的和是15,那么它们的大概平均值是7;i = 3 时,n / i = 5,代表三个连续的数的大概平均值是5,那么这三个数是4,5,6。大概平均值是因为整数除引起的。所以可以由相连数的个数得到这些数的大概平均值,从而可以得到这么多个相连的数,判断它们的和是否满足,不满足再看下一个相邻数的个数,直到相连数的第一个到了1。

  代码及结果:

1 #include 
2 3 using std::cin; 4 using std::cout; 5 using std::endl; 6 7 void hs(int n) 8 { 9 if (n <= 1)10 return;11 12 for (int ii = 2;; ii++) // ii 代表结果由几个数字相加13 {14 int divisionRes = n / ii; //相当于 ii 个数的平均数15 int thisSum = 0;16 int pS = divisionRes, pE = divisionRes; //两个指针17 int pLS; //最左边的一个数18 19 if (ii % 2) //ii 是奇数20 {21 thisSum += pS;22 pLS = divisionRes - (ii / 2);23 }24 else //ii 是偶数25 {26 pE++;27 thisSum += (pS + pE);28 pLS = divisionRes - (ii / 2) + 1;29 }30 31 if (pLS < 1)32 break;33 34 pS--, pE++; //上面的判断已经计算了最中心的了35 while (pS >= pLS)36 {37 thisSum += (pE + pS);38 pS--, pE++;39 }40 41 if (thisSum == n)42 {43 pS++, pE--;44 while (pS <= pE)45 cout << pS++ << " ";46 cout << endl;47 }48 }49 }50 51 int main(void)52 {53 int t = 160;54 while (t--)55 {56 int n = rand() % 1000;57 cout << n << endl;58 hs(n);59 cout << "-----------------------------------------------------------------------------\n";60 }61 cin.get();62 }




 

注意:

  1:奇数个相连的数和偶数个相连的数的统一。

  2:相连的数边界的处理。

转载于:https://www.cnblogs.com/jiayith/p/3930124.html

你可能感兴趣的文章
Android应用开发中三种常见的图片压缩方法
查看>>
项目总结12:bootstrap-select下拉框模糊搜索
查看>>
SCRUM 是一个用于开发和维护复杂产品的框架
查看>>
“完成”的定义
查看>>
62. ExtJS + fileuploadfield实现文件上传
查看>>
ThinkPHP/---普通传参
查看>>
计算机网络技术中的网络互连技术
查看>>
Linux 系统设置sh文件开机自启动
查看>>
201771010101 白玛次仁 《2018面向对象程序设计(Java)课程学习进度条》
查看>>
—————————整数加法—————————————————————1002——————————————————————————...
查看>>
set built-in function
查看>>
c语言学习之基础知识点介绍(十三):枚举的介绍和使用
查看>>
顺序表和链表的编写以及测试
查看>>
clientHeight、offsetHeight、scrollTop
查看>>
手写json
查看>>
python-装饰器的简单使用
查看>>
CDQ分治学习笔记
查看>>
洛谷P3515 [POI2011]Lightning Conductor(决策单调性)
查看>>
CSS - 复合选择器
查看>>
tomcat 启用NIO
查看>>