結果

問題 No.811 約数の個数の最大化
ユーザー yansi819yansi819
提出日時 2024-05-12 19:17:49
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 613 ms / 2,000 ms
コード長 799 bytes
コンパイル時間 227 ms
コンパイル使用メモリ 82,428 KB
実行使用メモリ 77,400 KB
最終ジャッジ日時 2024-05-12 19:17:53
合計ジャッジ時間 4,316 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 37 ms
52,660 KB
testcase_01 AC 57 ms
69,956 KB
testcase_02 AC 365 ms
77,400 KB
testcase_03 AC 34 ms
53,008 KB
testcase_04 AC 44 ms
61,564 KB
testcase_05 AC 70 ms
73,412 KB
testcase_06 AC 105 ms
76,776 KB
testcase_07 AC 93 ms
76,684 KB
testcase_08 AC 214 ms
76,948 KB
testcase_09 AC 246 ms
76,620 KB
testcase_10 AC 139 ms
76,604 KB
testcase_11 AC 325 ms
76,752 KB
testcase_12 AC 126 ms
76,532 KB
testcase_13 AC 613 ms
76,760 KB
testcase_14 AC 392 ms
76,700 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def prime_factors(N):
    res = []
    for i in range(2, int(N ** 0.5) + 1):
        while N % i == 0:
            res.append(i)
            N //= i
    if N != 1:
        res.append(N)
    return res

def divisors(N):
    res = 0
    for i in range(1, int(N ** 0.5) + 1):
        if N % i == 0:
            res += 1
            if i * i != N:
                res += 1
    return res

N, K = map(int, input().split())
N_pf = prime_factors(N)
#print(N, N_pf)
ma, ans = 0, -1
for M in range(N):
    i_pf = prime_factors(M)
    j = 0
    cnt = 0
    #print(M, i_pf)
    for p in i_pf:
        if j < len(N_pf) and p in N_pf[j:]:
            j = j + N_pf[j:].index(p) + 1
            cnt += 1
    if cnt >= K:
        d = divisors(M)
        if ma < d:
            ma = d
            ans = M
print(ans)
0