我怎样才能显示包含三个的数字?

时间:2016-06-09 10:40:28

标签: ruby

此代码显示包含1到999之间数字的字符串的第1000个数字。代码当前输出的数字是3.如何修改代码以将整个数字放在3所属的位置?即' i'

的计数
i = 1
megastringa = ""
while i != 1000 do
   megastringa << i.to_s
   i = i + 1
end
puts "#{megastringa}"
puts "This is the 1000th digit: #{megastringa[999]}"
puts "The number containing the 1000th digit is #{???}" # this should return 370

2 个答案:

答案 0 :(得分:0)

您可以更轻松地完成您尝试实现的目标(不使用循环)&gt;用以下代码替换整个代码:

megastring = (1..999).to_a.join
puts "Entire string is #{megastring}"
puts "1000'th digit is #{megastring[999]}"
puts "first 1000 digits is: #{megastring[0..999]}"

但是,如果你想要实际的3位数答案,你需要循环,应该写成:

i = 1
megastringa = ""
while megastringa.length < 1000 do
   megastringa << i.to_s
   i = i + 1
end
puts "#{megastringa}"
puts "This is the 1000th digit: #{megastringa[999]}"
puts "This is the number which the 1000th digit appears #{i-1}"

答案 1 :(得分:0)

megastringa中, 前9位数字由9位1位数字(1~9)组成 接下来的180位数字由90个2位数字(10~99)组成 接下来的2700位数字由900个3位数字(100~999)提供。

所以第1000个数字属于(1000 - 180 - 9) / 3 + 1 =第271个3位数字,即(100 + 271 - 1) = 370.所以答案是370。

蛮力证明

(1..999).to_a.join[999, 3]  #=> "370"