以下の内容はhttps://kyopro.hateblo.jp/entry/2019/02/07/005255より取得しました。


ABC032 A問題:高橋君と青木君の好きな数

問題. 高橋君と青木君の好きな数

正の整数  a, b, n が与えられる. n 以上の  a b の公倍数で最小の数を求めよ.

制約 1 \le a, b \le 100,  1 \le n \le 20,000

解法

 n a b の公約数になるまでインクリメントする.このとき,求める数は  n + a b - 1 以下となるので,インクリメントする数も高々  a b - 1 回となる.
求める数が  n + a b - 1 以下となるのは  a b による剰余を考えると分かる.整数  x a b の公約数となるための必要十分条件 x a b による剰余が 0 となることである. n \mod a b の値は 0 以上  a b よりも小さいので,剰余が 0 となるために加える最小の値は高々  a b - 1 である.

計算時間 O(a b)

ソースコードを表示

すぐに証明できなかったけどA問題だからインクリメントすればいいだろうと実装してしまったので反省.
剰余を考えると見通しがよくなるのでメモ.




以上の内容はhttps://kyopro.hateblo.jp/entry/2019/02/07/005255より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14