結果

問題 No.2249 GCDistance
ユーザー okapinokapin
提出日時 2023-03-17 23:30:35
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 732 bytes
コンパイル時間 195 ms
コンパイル使用メモリ 81,808 KB
実行使用メモリ 236,324 KB
最終ジャッジ日時 2023-10-18 16:31:14
合計ジャッジ時間 13,122 ms
ジャッジサーバーID
(参考情報)
judge11 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

A = 10**7
sieve = [i for i in range(A+1)]
p = 2
while p*p <= A:
    if sieve[p] == p:
        for q in range(2*p, A+1, p):
            if sieve[q] == q:
                sieve[q] = p
    p += 1

dp = [0]*(A+1)
for i in range(2, A+1):
    prime = set()
    orig = i
    while i > 1:
        prime.add(sieve[i])
        i //= sieve[i]

    res = 0
    prime = list(prime)
    l = len(prime)
    for bit in range(1, 1 << l):
        tmp = 1
        c = 1
        for j in range(l):
            if (bit >> j) & 1:
                tmp *= prime[j]
                c = (c+1) % 2
        res += orig//(tmp*(-1)**c)
    res -= 1

    dp[orig] = dp[orig-1]+orig-1+res

t = int(input())
for _ in range(t):
    n = int(input())
    print(dp[n])
0