結果
| 問題 |
No.265 数学のテスト
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-16 15:42:14 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 2,074 bytes |
| コンパイル時間 | 291 ms |
| コンパイル使用メモリ | 82,012 KB |
| 実行使用メモリ | 81,848 KB |
| 最終ジャッジ日時 | 2025-04-16 15:45:22 |
| 合計ジャッジ時間 | 4,729 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 RE * 2 |
ソースコード
def multiply(a, b, d):
res = [0] * (d + 1)
for i in range(d + 1):
if a[i] == 0:
continue
for j in range(d + 1):
if b[j] == 0:
continue
k = i + j
if k > d:
continue
res[k] += a[i] * b[j]
return res
def derivative(poly, d):
res = [0] * (d + 1)
for i in range(1, d + 1):
if i - 1 <= d:
res[i - 1] = poly[i] * i
return res
def parse_expr(s, pos, d):
terms = [parse_term(s, pos, d)]
while pos[0] < len(s) and s[pos[0]] == '+':
pos[0] += 1
terms.append(parse_term(s, pos, d))
res = [0] * (d + 1)
for term in terms:
for i in range(d + 1):
res[i] += term[i]
return res
def parse_term(s, pos, d):
factors = [parse_factor(s, pos, d)]
while pos[0] < len(s) and s[pos[0]] == '*':
pos[0] += 1
factors.append(parse_factor(s, pos, d))
res = factors[0]
for factor in factors[1:]:
res = multiply(res, factor, d)
return res
def parse_factor(s, pos, d):
if s[pos[0]] == 'd':
pos[0] += 1
if pos[0] >= len(s) or s[pos[0]] != '{':
raise ValueError("Expected '{' after 'd'")
pos[0] += 1
expr = parse_expr(s, pos, d)
if pos[0] >= len(s) or s[pos[0]] != '}':
raise ValueError("Expected '}' after expression")
pos[0] += 1
return derivative(expr, d)
elif s[pos[0]] == 'x':
pos[0] += 1
res = [0] * (d + 1)
if d >= 1:
res[1] = 1
return res
elif s[pos[0]].isdigit():
num = int(s[pos[0]])
pos[0] += 1
res = [0] * (d + 1)
res[0] = num
return res
else:
raise ValueError(f"Unexpected character: {s[pos[0]]}")
def main():
import sys
input = sys.stdin.read().split()
N = int(input[0])
d = int(input[1])
S = input[2]
pos = [0]
poly = parse_expr(S, pos, d)
print(' '.join(map(str, poly[:d + 1])))
if __name__ == "__main__":
main()
lam6er