技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

競技プログラミング day6

問題

atcoder.jp

回答

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分