【プログラミングコンテスト】AtCoder Beginner Contest 120②
最近アリ本でアルゴリズムを学習するのにハマってます、ねむーです。
今回はAtCoder(https://atcoder.jp/contests/abc120)にて開催されました、AtCoder Beginner Contest 120の第2回目です。
今回は、第2問「B - K-th Common Divisor」の問題と僕との戦闘記です。
0.はじめに
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.最後に
問題文を読むのは大事…
思い知らされました…