競技プログラミング day6
問題
回答
require 'pry' # 流れ説明 # ーーーーーーーーーーーーーーーーーーーーーーー # 代入例 # A => 8 # B => 12 # K => 2 # 1. 8を割り切れる正整数 -> 1,2,4,8 # 2. 12を割り切れる正整数 -> 1,2,3,4,6, # 8でも12でも共通して割り切れる正整数 # [1,2,4] # Kに2が代入されたので、2番目に大きいものを探す # -> 2 # ーーーーーーーーーーーーーーーーーーーーーーー a, b, k= gets.chomp.split(' ').map(&:to_i) answer=[] (1..100).each do |n| if a%n ==0 && b%n ==0 answer << n end end # answer => [1,2,4] # answer.reverse =>[4, 2, 1] # reverseした答えをローカル変数に代入(reverseは破壊的メソッドなので!はつけない) n = answer.reverse # indexは0スタートなので -1する puts n[k -1]
学びポイント
最初、answerをreverseせずにn[k -1]
していたので。2番目に大きいものを探すアルゴリズムができていなかった、そこでanswer.reverse
することで2番目に大きいものを探すアルゴリズムを作ることが出来た。
感想
最初にanswer.reverseの答えをローカル変数に代入しておらず答えが正解にならなかった。 こういう細かいミスに気をつけるべき
所有時間
制限時間40分