結果
| 問題 |
No.1552 Simple Dice Game
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-06-18 22:34:37 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,117 ms / 2,500 ms |
| コード長 | 1,270 bytes |
| コンパイル時間 | 577 ms |
| コンパイル使用メモリ | 82,332 KB |
| 実行使用メモリ | 121,056 KB |
| 最終ジャッジ日時 | 2024-06-22 20:59:47 |
| 合計ジャッジ時間 | 14,798 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 20 |
ソースコード
import sys
input = sys.stdin.readline
from collections import *
# def f(i, j):
# return pow(j-i+1, N-1, MOD)*(i+j)*(j-i+1)//2*N
# N, M = map(int, input().split())
# ans = 0
# MOD = 998244353
# for i in range(1, M+1):
# for j in range(i+1, M+1):
# #ans += (j-i)*(f(i, j)-f(i, j-1)-f(i+1, j)+f(i+1, j-1))
# ans += (j-i)*(f(i, j)-f(i, j-1)-f(i+1, j)+f(i+1, j-1))
# ans %= MOD
# print(ans)
N, M = map(int, input().split())
imos1 = [0]*(M+1)
imos2 = [0]*(M+1)
for i in range(1, M+1):
l = i-1
r = M-i
imos1[1] += i
imos1[l+1] -= i
imos1[1] += i
imos1[r+1] -= i
imos2[1] += 1
imos2[l+1] -= 1
imos2[1] += 1
imos2[r+1] -= 1
for i in range(1, M+1):
imos1[i] += imos1[i-1]
imos2[i] += imos2[i-1]
ans = 0
MOD = 998244353
power = []
for i in range(M+1):
power.append(pow(i, N-1, MOD))
inv2 = pow(2, MOD-2, MOD)
for d in range(1, M):
ans += d*power[d+1]%MOD*(d+1)%MOD*inv2%MOD*N%MOD*imos1[d]%MOD
ans %= MOD
ans -= d*power[d]%MOD*d%MOD*inv2%MOD*N%MOD*(imos1[d]-imos2[d])%MOD
ans %= MOD
ans -= d*power[d]%MOD*d%MOD*inv2%MOD*N%MOD*(imos1[d]+imos2[d])%MOD
ans %= MOD
ans += d*power[d-1]%MOD*(d-1)%MOD*inv2%MOD*N%MOD*imos1[d]%MOD
ans %= MOD
print(ans)