此代码显示包含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
答案 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"