結果
| 問題 |
No.1758 Lazy Segment Tree...?
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-10-16 01:51:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 3,601 ms / 8,000 ms |
| コード長 | 1,254 bytes |
| コンパイル時間 | 299 ms |
| コンパイル使用メモリ | 82,444 KB |
| 実行使用メモリ | 78,120 KB |
| 最終ジャッジ日時 | 2025-01-03 12:46:00 |
| 合計ジャッジ時間 | 52,340 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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 powermat(a,n):
x=len(a)
b=[[0 for i in range(3)] for j in range(3)]
c=[[0 for i in range(3)] for j in range(3)]
for i in range(3):
b[i][i]=1
while n:
if n%2:
for i in range(3):
for j in range(3):
c[i][j]=0
for i in range(3):
for j in range(3):
for k in range(3):
c[i][j]+=a[i][k]*b[k][j]
for i in range(3):
for j in range(3):
b[i][j]=c[i][j]%mod
for i in range(3):
for j in range(3):
c[i][j]=0
for i in range(3):
for j in range(3):
for k in range(3):
c[i][j]+=a[i][k]*a[k][j]
for i in range(3):
for j in range(3):
a[i][j]=c[i][j]%mod
n//=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)%mod
a[0][0]+=y
a[0][0]+=n*(n+1)//2%mod
a[1][1]+=y;
a[1][1]+=n*(n+1)//2%mod
a[1][0]+=x
a[0][1]+=x
a=powermat(a,q)
ans+=a[0][2]
print(ans*modpow(2,mod-2,mod)%mod)