so_brave 发表于 2011-11-07 16:03

ruby完成一道百度的测试题目

ruby完成一道百度的测试题目




.题目:
第一题:连续正整数

题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:

15=1+2+3+4+5
15=4+5+6
15=7+8

请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

输入数据:一个正整数,以命令行参数的形式提供给程序。

Ruby代码1.puts "Input the integer:"
2.number = gets   
3.
4.int_number = Integer(number)   
5.
6.hasResult = false;   
7.(1..int_number/2).eachdo |number_low|   
8.((number_low+1)..int_number).each do |number_high|   
9.    #The equation is (a+b)*(b-a+1)/2 数列求和公式   
10.    result = (number_low+number_high) * (number_high-number_low+1) / 2   
11.    if(result == int_number)   
12.      puts (number_low..number_high).to_a.inspect   
13.      hasResult = true;   
14.      break;   
15.    elsif(result > int_number)   
16.      break
17.    end
18.end
19.end
20.
21.if(!hasResult)   
22.puts "NONE"
23.end

i_love_ruby 发表于 2011-11-07 19:00

学习了。
大家看看,有没有 别的好的写法?

2gua 发表于 2011-11-08 17:58

Ruby的实现方法很多。

shmiya 发表于 2011-11-10 15:08

写的不错,如果不用那个计算数列的公式会慢很多
页: [1]
查看完整版本: ruby完成一道百度的测试题目