結果
問題 | No.2902 ZERO!! |
ユーザー | dp_ijk |
提出日時 | 2024-09-27 22:31:47 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 316 ms / 2,000 ms |
コード長 | 1,472 bytes |
コンパイル時間 | 301 ms |
コンパイル使用メモリ | 82,348 KB |
実行使用メモリ | 174,104 KB |
最終ジャッジ日時 | 2024-09-27 22:31:58 |
合計ジャッジ時間 | 7,298 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 40 ms
54,068 KB |
testcase_01 | AC | 39 ms
53,208 KB |
testcase_02 | AC | 316 ms
167,036 KB |
testcase_03 | AC | 38 ms
54,356 KB |
testcase_04 | AC | 118 ms
97,632 KB |
testcase_05 | AC | 178 ms
130,056 KB |
testcase_06 | AC | 275 ms
162,716 KB |
testcase_07 | AC | 134 ms
106,156 KB |
testcase_08 | AC | 295 ms
174,104 KB |
testcase_09 | AC | 261 ms
166,188 KB |
testcase_10 | AC | 212 ms
145,780 KB |
testcase_11 | AC | 175 ms
131,008 KB |
testcase_12 | AC | 82 ms
81,660 KB |
testcase_13 | AC | 298 ms
174,008 KB |
testcase_14 | AC | 212 ms
146,644 KB |
testcase_15 | AC | 277 ms
144,168 KB |
testcase_16 | AC | 168 ms
124,432 KB |
testcase_17 | AC | 277 ms
165,732 KB |
testcase_18 | AC | 245 ms
151,648 KB |
testcase_19 | AC | 223 ms
154,700 KB |
testcase_20 | AC | 199 ms
130,608 KB |
testcase_21 | AC | 212 ms
146,284 KB |
testcase_22 | AC | 137 ms
110,020 KB |
testcase_23 | AC | 181 ms
125,412 KB |
testcase_24 | AC | 41 ms
53,144 KB |
testcase_25 | AC | 42 ms
54,312 KB |
testcase_26 | AC | 41 ms
54,024 KB |
testcase_27 | AC | 43 ms
54,268 KB |
testcase_28 | AC | 40 ms
53,800 KB |
testcase_29 | AC | 41 ms
54,384 KB |
testcase_30 | AC | 42 ms
53,660 KB |
testcase_31 | AC | 42 ms
54,092 KB |
testcase_32 | AC | 42 ms
54,196 KB |
testcase_33 | AC | 42 ms
54,504 KB |
testcase_34 | AC | 41 ms
54,628 KB |
testcase_35 | AC | 41 ms
54,764 KB |
testcase_36 | AC | 41 ms
54,376 KB |
testcase_37 | AC | 41 ms
54,180 KB |
testcase_38 | AC | 43 ms
54,300 KB |
testcase_39 | AC | 41 ms
52,988 KB |
testcase_40 | AC | 41 ms
54,112 KB |
testcase_41 | AC | 41 ms
54,640 KB |
testcase_42 | AC | 42 ms
53,664 KB |
testcase_43 | AC | 41 ms
54,732 KB |
ソースコード
def isqrt(x: int, root=2): assert 0 <= x assert root >= 1 if x == 0 or x == 1: return x if root == 1: return x res = int(x**(1/root)) while res**root < x: res += 1 while res**root > x: res -= 1 return res MOD = 998_244_353 N = int(input()) data = bytearray((0, 1)) * ((N+1) // 2) data[:3] = [0, 0, 1] for x in range(3, isqrt(N) + 1): if data[x] == 1: for y in range(x*x, len(data), x): data[y] = 0 P = tuple(n for n, is_prime in enumerate(data) if is_prime) L = [0]*(N+1) for p in P: L[p] = N X = N while X: X, r = X//p, X%p L[p] -= r L[p] //= p-1 def recips(N, MOD): assert 0 <= N and 1 < MOD INF = float("INF") if N == 0: return [INF] dp = [INF] * (N+1) dp[1] = 1 for x in range(2, N+1): q, r = divmod(MOD, x) if dp[r] == 0: try: dp[x] = pow(x, -1, MOD) except ValueError: pass else: dp[x] = -(q) * dp[r] % MOD return dp I = recips(N + 100, MOD) def quot_range(N): assert N >= 1 res = [] l = 1 while l <= N: q = N//l r = N//q res.append((q, (l, r+1))) l = r+1 return res M = [1]*(N+2) for p in P: for q, (l, r) in quot_range(L[p]): M[l] *= q+1 M[r] *= I[q+1] M[l] %= MOD M[r] %= MOD M.pop() from itertools import accumulate Z = list(accumulate(M, lambda x, y: x*y%MOD)) Z = [z-1 for z in Z] ans = sum(Z) % MOD print(ans)