黒板の文字を何回も2で割りたい!ABC081B - Shift only

atcoder.jp

今日も朝の体操の様子をお届けします。

作成した回答がこちら

# 整数の入力
n = gets.to_i
# スペース区切りの整数の入力
ary=gets.chomp.split(" ").map(&:to_i);
# 変数を宣言
i = 0
# 整数を配列に入力
while
if ary[i % n] % 2 == 1
break
end
ary[i % n] /= 2
i += 1
end
# 出力
print("#{i / n}\n")

WAになる理由がわかりません。わかる方、教えてもらえますか?

 

ーーーーーーーーーー以下、追記ーーーーーーーーーーー 

Twitterにてご指摘いただき解決しました!
本当に素晴らしいお方に助けていただき感謝しています!
 
# 整数を配列に入力
while
 のところを
while true
に変更して、提出先も確認して
ACになりました!
 

ありがとうございます!

 

ーーーーーーーーーー以上、追記ーーーーーーーーーーー 

 

配列の要素を一斉に割っていて処理が速い回答例がこちら

  1. # frozen_string_literal: true
  2. enable_count = 0
  3. count = gets.chomp.to_i
  4. arr = gets.chomp.split(' ').map(&:to_i)
  5. while true do
  6. break if arr.map{ |n| n % 2 }.include?(1)
  7. enable_count += 1
  8. arr = arr.map{ |n| n / 2 }
  9. end
  10. puts enable_count