正在阅读:用模拟精灵解百度编程大赛试题用模拟精灵解百度编程大赛试题

2005-09-23 09:57 出处: 作者:一鹤 责任编辑:moningfeng

  热门推荐如何结束测试员和程序员之间的战争  IT人士之成功之6大步骤

  原题要求用c++做的,不过用模拟精灵比较快,但未仔细分析优化。

  第一题 连续正整数(10分)

  题目描述:一个正整数有可能可以被表示为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

  评分标准:程序输出结果是否正确。

print(str);

while( nStop() ) do
delay(100)

print("按".._STOPHKEY..",然后输入一个数字退出程序")
print("请输入一个正整数:")

ns = io.read();

while( nStop() and ( not tonumber(ns) ) )do
print("请输入一个有效整数");
ns = io.read();
end

n = tonumber(ns)

print("")

for i=1,n/2+1,1 do
local k = 0;
local j2 =0;
for j =i,n/2+1,1 do
k = k + j;
j2=j;
if(k == n) then break end;
end;


if(k==n)then
local out = n.." = "..i;
for y=i+1,j2,1 do
out = out.." + "..y
end;
print(out);
end;
end;

print("")

end;


键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品