我刚刚开始红宝石。所以,想到尝试在线发布的一些问题。 (这里是problem on codechef)我写了下面这段代码:
def h(n)
if n==0
value = 0
else
c_n = $number[n-1].to_i
value = ( h(n-1) * $A + c_n ) % $B
end
value
end
n, $A, $B, G = gets.scan(/\d+/).map! { |x| x.to_i }
(1..10**n).to_a.each {|x|
$number = x.to_s.rjust(n, '0')
if ( G == h(n) )
puts $number
break
end
}
我在窗口上用输入值编译它:3 11 111 92
Windows上的输出符合预期:084 但是,在linux机器上它是:032
可能的原因是什么?在给定的代码片段中是否有任何可以产生差异的东西?
答案 0 :(得分:0)
感谢Nakilon的评论。我得到了答案。
ruby 1.9中的 "string"[1] = "t"
但是在红宝石"string"[1] = 116
所以,在ruby 1.9中:
c_n = $number[n-1].to_i
需要为ruby 1.8更改为:
c_n = $number.split("")[n-1].to_i