結果
| 問題 |
No.2272 多項式乗算 mod 258280327
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 12:53:52 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,126 bytes |
| コンパイル時間 | 249 ms |
| コンパイル使用メモリ | 82,376 KB |
| 実行使用メモリ | 273,348 KB |
| 最終ジャッジ日時 | 2025-06-12 12:57:15 |
| 合計ジャッジ時間 | 7,921 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 26 WA * 3 TLE * 1 -- * 3 |
ソースコード
MOD = 258280327
def multiply(a, b):
len_a = len(a)
len_b = len(b)
if len_a == 0 or len_b == 0:
return []
if len_a < len_b:
a, b = b, a
len_a, len_b = len_b, len_a
if len_b <= 32:
res = [0] * (len_a + len_b - 1)
for i in range(len_a):
ai = a[i]
if ai == 0:
continue
for j in range(len_b):
if i + j >= len(res):
break
res[i+j] = (res[i+j] + ai * b[j]) % MOD
return res
split = (len_a + 1) // 2
a0 = a[:split]
a1 = a[split:]
b0 = b[:min(split, len_b)]
b1 = b[min(split, len_b):]
z0 = multiply(a0, b0)
z2 = multiply(a1, b1)
a01 = []
max_a = max(len(a0), len(a1))
for i in range(max_a):
val = 0
if i < len(a0):
val += a0[i]
if i < len(a1):
val += a1[i]
a01.append(val % MOD)
b01 = []
max_b = max(len(b0), len(b1))
for i in range(max_b):
val = 0
if i < len(b0):
val += b0[i]
if i < len(b1):
val += b1[i]
b01.append(val % MOD)
z1 = multiply(a01, b01)
z1 = subtract(z1, z0)
z1 = subtract(z1, z2)
res = [0] * (len_a + len_b - 1)
for i in range(len(z0)):
res[i] = (res[i] + z0[i]) % MOD
for i in range(len(z1)):
pos = i + split
if pos < len(res):
res[pos] = (res[pos] + z1[i]) % MOD
for i in range(len(z2)):
pos = i + 2 * split
if pos < len(res):
res[pos] = (res[pos] + z2[i]) % MOD
return res
def subtract(a, b):
res = a.copy()
for i in range(len(b)):
if i < len(res):
res[i] = (res[i] - b[i]) % MOD
return res
n = int(input())
F = list(map(int, input().split()))
m = int(input())
G = list(map(int, input().split()))
F = [x % MOD for x in F]
G = [x % MOD for x in G]
product = multiply(F, G)
while len(product) > 1 and product[-1] == 0:
product.pop()
L = len(product) - 1
print(L)
print(' '.join(map(str, product)) if product else '0')
gew1fw