首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个正数n,输出所有和为n连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
输入一个正数n,输出所有和为n连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
admin
2019-03-29
90
问题
输入一个正数n,输出所有和为n连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
选项
答案
void PrintContinuousSequence(int small, int big); ///////////////////////////////////////////////////////////////////////// // Find continuous sequence, whose sum is n ///////////////////////////////////////////////////////////////////////// void FindContinuousSequence(int n) { if(n < 3) return; int small = 1; int big = 2; int middle = (1 + n) / 2; int sum = small + big; while(small < middle) { // we are lucky and find the sequence if(sum == n) PrintContinuousSequence(small, big); // if the current sum is greater than n, // move small forward while(sum > n) { sum -= small; small ++; // we are lucky and find the sequence if(sum == n) PrintContinuousSequence(small, big); } // move big forward big ++; sum += big; } } ///////////////////////////////////////////////////////////////////////// // Print continuous sequence between small and big ///////////////////////////////////////////////////////////////////////// void PrintContinuousSequence(int small, int big) { for(int i = small; i <= big; ++ i) printf("%d ", i); printf("\n"); }
解析
这是网易的一道面试题。
这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。如果从small到big的序列的和小于n的话,我们向右移动big,相当于向序列中添加big的下一个数字。一直到small等于(1+n)/2,因为序列至少要有两个数字。
转载请注明原文地址:https://kaotiyun.com/show/axmZ777K
0
程序员面试
相关试题推荐
Americanschoolsaren’texactlyfrozenintime,butconsideringthepaceofchangeinotherareasoflife,ourpublicschoolste
[A]TherelativelylowtuitionfeesinAsiaarealsoamaindrawforprospectivestudents.Lastyear,onlinehighereducationre
KimiyukiSudashouldbeaperfectcustomerforJapan’scar-makers.He’sayoung,successfulexecutiveatanInternet-servicesco
八皇后问题(输出所有情况,不过有些结果只是旋转了90度而已)。哈哈:)回溯算法的典型例题
输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
某队列的声明如下:templateclassCQueue{public:CQueue(){}~CQueue(){}voidappendTail(constT&node);//appendaelementto
公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的
概述.NET里对remoting和webservice两项技术的理解和实际中的应用。
通过网上邻居查找mary计算机上的共享文件夹的保存文档。
以下有关自定义函数过程的说法中,错误的是________。
随机试题
新的会计年度开始,可以继续使用不必更换新账的是()。
屈原在《离骚》中首创了“________”的意象。
男,65岁,近一周来感觉右手与右脚麻木,心烦意乱,但生活工作仍能进行。心理治疗师可以选择的心理测验是
A.桃仁B.杏仁C.虎杖D.丹参E.莪术活血祛瘀外,止咳平喘的是()。
下列哪种灯具的下半球的光通量百分比值(所占总光通量的百分比)为间接型灯具?
甲公司为增值税一般纳税人,适用的增值税税率为16%。2018年7月甲公司发生如下业务:(1)1日,与乙公司签订委托代销合同,委托乙公司销售N商品2000件,合同约定乙公司按每件100元对外销售,甲公司按售价的10%向乙公司支付手续费,手续费增值税税率6
2002年6月10日,西岳经贸公司向中科物资供应公司购买价值50万元的特种钢材,同时开出一张50万元的汇票并委托该市商业银行付款,中科物资供应公司持票后到特种钢厂进货,将该汇票背书转让给该钢厂,钢厂因为业务关系又将该汇票背书转让给西金焦化厂。西金焦
下列不属于经营者与消费者交易的基本原则有()。
单独完成了某项工程,甲、乙、丙三人分别需10小时、15小时、20小时,开始三人一起干,后因工作需要,甲中途调走了,结果共用了6小时完成了这项工作。那么,甲实际工作了()小时。
下列选项中属于孳息的是()
最新回复
(
0
)