結果
| 問題 |
No.2272 多項式乗算 mod 258280327
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 14:58:44 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,936 bytes |
| コンパイル時間 | 190 ms |
| コンパイル使用メモリ | 82,816 KB |
| 実行使用メモリ | 156,416 KB |
| 最終ジャッジ日時 | 2025-06-12 14:59:53 |
| 合計ジャッジ時間 | 10,448 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 WA * 2 TLE * 3 -- * 5 |
ソースコード
import sys
from sys import stdin
MOD = 258280327
def add_polynomials(a, b):
max_len = max(len(a), len(b))
res = [0] * max_len
for i in range(max_len):
if i < len(a):
res[i] = (res[i] + a[i]) % MOD
if i < len(b):
res[i] = (res[i] + b[i]) % MOD
return res
def subtract_polynomials(a, b):
max_len = max(len(a), len(b))
res = [0] * max_len
for i in range(max_len):
val = 0
if i < len(a):
val = (val + a[i]) % MOD
if i < len(b):
val = (val - b[i]) % MOD
res[i] = val % MOD
return res
def multiply_polynomials(f, g):
if len(f) == 0 or len(g) == 0:
return []
max_len = max(len(f), len(g))
f_padded = f + [0] * (max_len - len(f))
g_padded = g + [0] * (max_len - len(g))
if max_len == 1:
return [(f_padded[0] * g_padded[0]) % MOD]
mid = max_len // 2
f_low = f_padded[:mid]
f_high = f_padded[mid:]
g_low = g_padded[:mid]
g_high = g_padded[mid:]
a = multiply_polynomials(f_low, g_low)
b = multiply_polynomials(f_high, g_high)
f_sum = add_polynomials(f_low, f_high)
g_sum = add_polynomials(g_low, g_high)
c = multiply_polynomials(f_sum, g_sum)
middle = subtract_polynomials(c, a)
middle = subtract_polynomials(middle, b)
middle_shifted = [0] * mid + middle
b_shifted = [0] * (2 * mid) + b
res = add_polynomials(a, middle_shifted)
res = add_polynomials(res, b_shifted)
return res
def main():
n = int(stdin.readline())
f = list(map(int, stdin.readline().split()))
m = int(stdin.readline())
g = list(map(int, stdin.readline().split()))
h = multiply_polynomials(f, g)
l = n + m
if l < 0:
l = 0
h = h[:l + 1]
if all(c == 0 for c in h):
print(0)
print(0)
else:
print(l)
print(' '.join(map(str, h)))
if __name__ == '__main__':
main()
gew1fw