結果
| 問題 |
No.2249 GCDistance
|
| コンテスト | |
| ユーザー |
okapin
|
| 提出日時 | 2023-03-17 23:30:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 732 bytes |
| コンパイル時間 | 171 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 243,072 KB |
| 最終ジャッジ日時 | 2024-09-18 12:32:30 |
| 合計ジャッジ時間 | 12,917 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | TLE * 1 |
| other | -- * 10 |
ソースコード
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])
okapin