ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

【プログラミングコンテスト】AtCoder Beginner Contest 120②

最近アリ本でアルゴリズムを学習するのにハマってます、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/abc120)にて開催されました、AtCoder Beginner Contest 120の第2回目です。

今回は、第2問「B - K-th Common Divisor」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

正整数 A , B が与えられます。

A も B も割り切る正整数のうち、 K 番目に大きいものを求めてください。

なお、与えられる入力では、 A も B も割り切る正整数のうち K 番目に大きいものが存在することが保証されます。

2.初見の感想

  • 割り切れるので%演算を使用するのかな?

3.解けなかったので振り返り

  • 問題文読み間違えてる…
  • 僕はK番目に小さいものを出す問題だと思ってました…(思い込みヨクナイ)
  • 方策としては、余りが0の時の判定をするだけで解けそうです

4.全コード

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using static System.Console;
class Program
{
    static void Main(string[] args)
    {
        string[] temp = Console.ReadLine().Split(' ');
        int A = int.Parse(temp[0]);
        int B = int.Parse(temp[1]);
        int K = int.Parse(temp[2]);
        int a = 0;
        for(int i = 100; i >= 1; i--)
        {
            if (A % i == 0 && B % i == 0)
            {
                a++;
                if (a == K)
                {
                    Console.WriteLine(i);
                    return;
                }
            }
        }
    }
}

5.最後に

問題文を読むのは大事…

思い知らされました…