(備忘録)AtCoderをやって 1
問題文
黒板に N 個の正の整数 A 1 ,...,A N が書かれています.
すぬけ君は,黒板に書かれている整数がすべて偶数であるとき,次の操作を行うことができます.
黒板に書かれている整数すべてを,2 で割ったものに置き換える. すぬけ君は最大で何回操作を行うことができるかを求めてください.
自分の回答(動きません)
n = gets.chomp.to_i *a = gets.chomp.split(" ").map(&:to_i) cnt = 0 while a[n].even? a[n] << a[n] % 2 cnt += 1 end puts cnt
とりあえず一つだったらこうやる?みたいなの考えながらやっていたけど全てが偶数ならという条件、元の配列にどうやって割った数を入れるかというのが分からず
参考回答(自分が理解しやすかったやつ)
n = gets.chomp.to_i hoge = gets.split(' ').map(&:to_i) count = 0 while hoge.count{|h| h.even?} == n hoge = hoge.map! {|i| i / 2} count += 1 end puts count
全てが偶数ならという条件・・・hoge.count{|h| h.even?} == n 元の配列に2で割った数を入れる・・・ hoge = hoge.map! {|i| i / 2}
n = gets.to_i numbers = gets.chomp.split(' ').map(&:to_i) count = 0 while numbers.all?{|number| number % 2 == 0} do numbers.map!{|number| number / 2} count += 1 end puts count
全てが偶数ならという条件・・・numbers.all?{|number| number % 2 == 0} 元の配列に2で割った数を入れる・・・ numbers.map!{|number| number / 2}