ABC340 D問題 自分用解説

2024/2/17に開催されたABC340のD問題 Only one of twoの自分用解説です。
自分は解けませんでした…

問題

正整数N,M,K が与えられます。ここで、Nと M は異なります。
正の整数であって、NとMのうち ちょうど一方のみ で割り切れる数のうち小さい方からK番目のものを出力してください。

考えたこと

・多分 二分探索で解くんだろう
・「NとMの一方のみで割り切れる数」をどうやって用意するんだろう?

結局「NとMの一方のみで割り切れる数」をどう作るか考えつかずに時間切れ。

サンプルコード(解説ページからコピペ)

大事そうなところ解説

二分探索は合ってましたが、大事なところを勘違いしてました…
自分は「NとMの一方のみで割り切れる数」の配列を作ろうと悩んでいたのですが、求めたいのは条件を満たす「個数」なので、そんな配列要らないんですね。(そんな配列があったら二分探索しなくていいし)

条件を満たす「個数」は、「Nの倍数 + Mの倍数 – NとMの最小公倍数 * 2」なので、17行目のような式になります。

line 4~8 : 渡された2つの整数の最大公約数を求めています。
     最小公倍数 = N * M / NとMの最大公約数 だから、最大公約数が必要なんですね。

反省

問題文読み違えというか、解釈の勘違いというか…
もったいないですね。

Cまで解けたのでHighest更新!
Cを安定して解けるかが茶色への課題です。

This article was written by maple

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です