問題一覧 > 通常問題

No.811 約数の個数の最大化

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 198
作問者 : Shuz* / テスター : tatyam
14 ProblemId : 2337 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2019-04-12 18:08:41

問題文

合成数 N より小さく、 N と共通の素因数を K 個以上持つような自然数の中で、最も約数の多い自然数 M を出力するプログラムを作成せよ。M が複数存在する場合は、最小の M を出力せよ。

ただしここでいう素因数の個数は、同じ素因数でも複数ある場合には別々に数えるものとする。
例: 48 の共通の素因数は {2,2} で、その個数は 2 である。

補足 ある数以下の自然数の中で約数の個数が最も多い自然数を高度合成数という。本問は N 以下の高度合成数を尋ねている訳ではないので注意が必要である。

入力

N K

1行目に合成数 N と自然数 K が空白区切りで与えられます。

出力

N より小さく、 N の素因数のうち K 個以上の素因数を持つ、約数の個数が最大の自然数の中で最小の M を出力してください。

制約

4N100000
1K15
K< (N の素因数の個数)

サンプル

サンプル1
入力
48 4
出力
24

48=2×2×2×2×3 であり、 M はこのうち 4 つの素因数を持つから、 M2×2×2×2=16 または 2×2×2×3=24 を約数に持つ。このような自然数の中で、 N より小さく、約数の個数が最大なものは M=24 のときその約数は 1,2,3,4,6,8,12,248 個で、これが最大であるから、24を出力する。

サンプル2
入力
1000 1
出力
840

サンプル3
入力
90720 9
出力
75600

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。