結果
問題 |
No.265 数学のテスト
|
ユーザー |
![]() |
提出日時 | 2025-04-15 21:45:46 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 2,074 bytes |
コンパイル時間 | 328 ms |
コンパイル使用メモリ | 81,480 KB |
実行使用メモリ | 81,408 KB |
最終ジャッジ日時 | 2025-04-15 21:46:29 |
合計ジャッジ時間 | 4,027 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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()