結果
問題 | No.2406 Difference of Coordinate Squared |
ユーザー |
|
提出日時 | 2023-08-04 22:49:44 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,262 bytes |
コンパイル時間 | 250 ms |
コンパイル使用メモリ | 82,264 KB |
実行使用メモリ | 339,484 KB |
最終ジャッジ日時 | 2024-10-14 20:56:49 |
合計ジャッジ時間 | 5,547 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 1 TLE * 1 -- * 53 |
ソースコード
import syssys.setrecursionlimit(5*10**5)input = sys.stdin.readlinefrom collections import defaultdict, deque, Counterfrom heapq import heappop, heappushfrom bisect import bisect_left, bisect_rightfrom math import gcdn,m = map(int,input().split())s = set()for i in range(n+1):s.add(i**2)xy = []for i in range(n+1):xx = i*iyy = xx-mif yy in s:xy.append([i, int(pow(yy,0.5))])mod = 998244353# nCkdef com(n, mod):fact = [1, 1]factinv = [1, 1]inv = [0, 1]for i in range(2, n+1):fact.append((fact[-1]*i) % mod)inv.append((-inv[mod % i]*(mod//i)) % mod)factinv.append((factinv[-1]*inv[-1]) % mod)return fact, factinvf,fi = com(n+10, mod)ans = 0for x,y in xy:for dx in range(n+1):dy = n-dxif dx < x or dy < y: continueif dx%2 != x%2 or dy%2 != y%2: continuea = x + (dx-x)//2b = (dx-x)//2c = y + (dy-y)//2d = (dy-y)//2tmp = f[n] * fi[a]%mod * fi[b]%mod * fi[c]%mod * fi[d] %modif x != 0:tmp *= 2tmp %= modif y != 0:tmp *= 2tmp %= modans += tmpans %= modprint(ans * pow(pow(4, n, mod), mod-2, mod) % mod)