結果
| 問題 |
No.1758 Lazy Segment Tree...?
|
| コンテスト | |
| ユーザー |
PCTprobability
|
| 提出日時 | 2021-10-16 01:31:00 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 5,817 ms / 8,000 ms |
| コード長 | 942 bytes |
| コンパイル時間 | 333 ms |
| コンパイル使用メモリ | 82,124 KB |
| 実行使用メモリ | 82,204 KB |
| 最終ジャッジ日時 | 2024-10-07 13:27:46 |
| 合計ジャッジ時間 | 78,573 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 36 |
ソースコード
mod=998244353
def modpow(a,b,m):
res=1
while b:
if b%2:
res*=a
res%=m
a*=a
a%=m
b//=2
return res
def prodmat(a,b):
x,y,z=len(a),len(b[0]),len(b)
c=[[0 for i in range(y)] for j in range(x)]
for i in range(x):
for j in range(y):
for k in range(z):
c[i][k]+=a[i][j]*b[j][k]
c[i][k]%=mod
return c
def powermat(a,k):
x=len(a)
b=[[0 for i in range(x)] for j in range(x)]
for i in range(x):
b[i][i]=1
while k:
if k%2:
b=prodmat(b,a)
a=prodmat(a,a)
k//=2
return b
n,q=map(int,input().split())
ans=0
for i in range(1,n):
x=i*(n-i+1)
y=n*(n+1)//2-x
z=(n-i)*(n-i+1)*(n-i+2)//6
x%=mod
y%=mod
z%=mod
a=[[0 for i in range(3)] for j in range(3)]
a[1][2]+=z;
a[2][2]+=n*(n+1)
a[0][0]+=y
a[0][0]+=n*(n+1)//2
a[1][1]+=y;
a[1][1]+=n*(n+1)//2
a[1][0]+=x
a[0][1]+=x
a=powermat(a,q)
ans+=a[0][2]
print(ans*modpow(2,mod-2,mod)%mod)
PCTprobability