結果
| 問題 |
No.2151 3 on Torus-Lohkous
|
| コンテスト | |
| ユーザー |
snuke
|
| 提出日時 | 2022-10-29 09:07:02 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 766 bytes |
| コンパイル時間 | 348 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 92,032 KB |
| 最終ジャッジ日時 | 2024-10-14 02:44:25 |
| 合計ジャッジ時間 | 2,939 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 3 WA * 5 |
ソースコード
import math
mod = 998244353
M = 10**6+5
fac,ifac = [1]*M,[1]*M
for i in range(1,M):
fac[i] = fac[i-1]*i%mod
ifac[-1] = pow(fac[-1],mod-2,mod)
for i in range(M-1,1,-1):
ifac[i-1] = ifac[i]*i%mod
def comb(n,k):
return fac[n]*ifac[k]*ifac[n-k]%mod
def inv(x):
return ifac[x]*fac[x-1]%mod
def solve():
h,w = map(int,input().split())
n = math.gcd(h,w)
ans = h*w
if 3 < n:
ans += n*2
if n%3 == 0:
ans += n*12
if n%4 == 0:
ans += 16
if n%2 == 0:
for p in range(2):
now = 0
for i in range(2-p,n,2):
m = n//2-i*2
if m < i*3 or m%3 != 0: continue
now = (now+comb(m//3-1,i-1)*inv(i))%mod
now *= n
ans += now**2
ans %= mod
print(ans)
T = int(input())
for ti in range(T):
solve()
snuke