今天下午无意中看到这个题目:
题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入数据:一个正整数,以命令行参数的形式提供给程序。
输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结 果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出 “NONE”。
例如,对于15,其输出结果是:
1 2 3 4 5
4 5 6
7 8
对于16,其输出结果是: NONE
刚开始毫无思路,遂百度之(发现居然是百度的一道编程题),无奈网上的程序都比较麻烦,实在看不懂而且也看不下去(主要是因为本人水平太菜
),还好有了点思路,于是动手写之。无奈刚写完时怎么运行都不对,苦思冥想也木想出个所以然,遂去吃饭。吃完饭回来后又把sum和j挨个输出检查到底什么地方出错了,终于在一番输出测试后发现问题出现在第二个for语句中的<=上面,把<=改成<运行之,结果运行结果正确,嘿嘿
!然后又加了一个flag标志,最后运行验证,程序正确。程序如下,欢迎大家批评指正,请轻拍!
版权声明:本文为zhizunwudi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。