結果
| 問題 |
No.3377 Sigma Index × A Problems
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-22 00:28:25 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 991 ms / 3,000 ms |
| コード長 | 1,276 bytes |
| コンパイル時間 | 373 ms |
| コンパイル使用メモリ | 82,736 KB |
| 実行使用メモリ | 78,744 KB |
| 最終ジャッジ日時 | 2025-11-22 00:28:33 |
| 合計ジャッジ時間 | 7,321 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 8 |
ソースコード
import sys
input = lambda :sys.stdin.readline()[:-1]
ni = lambda :int(input())
na = lambda :list(map(int,input().split()))
yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES")
no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO")
#######################################################################
"""
X に一致させる
L <= X <= R
長さ n ができるか
lcm(1, ..., n) | X
n <= X / L
長さは 40 以下としていい
m <= 40 に対して、
m 以上にできる L, R の個数を数える
lcm(1, ..., m) の倍数を含む
f(1, 1) = 1
f(1, 2) = 2
f(2, 3) = 1
2 * 1, 1 * 2
f(1, 3) = 2
"""
from math import gcd
mod = 998244353
def solve(n):
z = 1
ans = 0
ans %= mod
for i in range(1, 41):
z = z * i // gcd(z, i)
y = z // i
# X = tiy とする
# X <= R < X + tiy について、
# L <= ty
# ty
# i = 1, ..., p
p, q = divmod(n, z)
if p == 0:
continue
ans += p * (p - 1) // 2 % mod * y % mod * z % mod
ans += (p * y) % mod * (q + 1) % mod
ans %= mod
# print(i, p, q, y * p * (p - 1) // 2 * z, p * y * q)
return ans
for _ in range(ni()):
n = ni()
print(solve(n))