結果

問題 No.2891 Mint
ユーザー detteiuudetteiuu
提出日時 2024-09-13 23:18:42
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 144 ms / 2,000 ms
コード長 573 bytes
コンパイル時間 295 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 75,264 KB
最終ジャッジ日時 2024-09-13 23:18:49
合計ジャッジ時間 5,722 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 54
権限があれば一括ダウンロードができます

ソースコード

diff #

N, M = map(int, input().split())

MOD = 998244353
ans = M*N%MOD
for i in range(1, min(N+1, 10**6+1)):
    ans -= M
    ans %= MOD
    ans += M%i
    ans %= MOD
if N <= 10**6:
    exit(print(ans))

def SUM(left, right, cnt):
    return (left+right)*cnt//2%MOD

right = M
left = M//2+1
cnt = 1
while True:
    R = min(right, N)
    L = max(left, 10**6+1)
    if R-L+1 > 0:
        ans -= (R-L+1)*M
        ans %= MOD
        ans += SUM(M%R, M%L, R-L+1)
        ans %= MOD
    if left <= 10**6:
        break
    cnt += 1
    right = M//cnt
    left = M//(cnt+1)+1

print(ans)
0