首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个正数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
95
问题
输入一个正数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
程序员面试
相关试题推荐
AWelcomeE-mail欢迎邮件Someinternationalstudentsarecomingtoyouruniversity.Writethemane-mailinthenameoftheStudent
Weakdollarorno,$46,000—thepriceforasingleyearofundergraduateinstructionamidtheredbrickofHarvardYard—is【C1】__
KimiyukiSudashouldbeaperfectcustomerforJapan’scar-makers.He’sayoung,successfulexecutiveatanInternet-servicesco
Directions:Inthissection,youareaskedtowriteanessaybasedonthefollowinginformation.Makecommentsandexpressy
不开辟新空间完成字符串的逆序
从当前界面上的菜单或“网络任务”开始创建拨号连接,通过Modem连接到In-ternet,拨号时先拨0,再拨16300,用户名和密码均为16300,将创建的连接的名称命名为:linkl,然后在桌面上创建一个到此连接的快捷方式。除此之外,其余选项均使用默认设
将D盘"试题"文件夹中的"考题1.doc"文件的属性设置为隐藏和只读。
对数据排序时,下列操作错误的是()A.选清单中任意一个单元格B.选清单做排序操作C.选清单中任意一行排序D.选工作表中任意一个单元格排序
下面()不属于Excel2000的视图方式A.全屏视图B.分页预览C.普通视图D.页面视图
在Excel2003的单元格A2中有数值型数据10,要在相邻的单元格中利用填充柄填充自动加1的序列,正确的操作是()。
随机试题
由固体直接转变成气体的相变过程称为()。
电刺激防御反应区可伴发下列哪些心血管活动改变
女性,35岁。尿频、尿急、尿痛5天,体温39.5℃,左肾区有叩击痛,尿常规蛋白++,白细胞满视野,红细胞5一10/HP。假设,本次中段尿培养结果为大肠杆菌生长,细菌计数>105/ml,此时应考虑
监理工程师要收集和整编有关质量记录,其中包括来自供应方的质量记录文件,并按合同要求进行核查。所有质量记录等文件( ),列出清单并输入计算机,以便保存和检索。
《建设工程安全生产管理条例》规定,建设单位应当在拆除工程施工()日前,将有关资料报送建设工程所在地的县级以上地方人民政府建设行政主管部门或其他有关部门备案。
年金终值和现值的计算通常采用()的形式。
社会治安综合治理中,加强行政管理必须坚持()。
逻辑变量X、Y进行逻辑“异或”(用表示)运算的含义是:若X、Y取值相同(都为true或都为false),则XY的值为false,否则XY的值为true。用逻辑“与”(∧)、“或”(∨)、“非”(-)表示XY的式子为______。
A=HallucinogensB=CocaineC=AlcoholWhichdrug...mayslowdownbodyfunctions?【P1】______canleadtothedrivers’dis
Theoceanshavealwaysservedasasinkforcarbondioxide,buttheburningoffossilfuelssincethebeginningoftheindustria
最新回复
(
0
)