結果
問題 | No.2891 Mint |
ユーザー | detteiuu |
提出日時 | 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 |
ソースコード
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)