結果
| 問題 |
No.265 数学のテスト
|
| コンテスト | |
| ユーザー |
とりゐ
|
| 提出日時 | 2023-06-06 14:46:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 168 ms / 2,000 ms |
| コード長 | 1,005 bytes |
| コンパイル時間 | 289 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 116,224 KB |
| 最終ジャッジ日時 | 2024-12-29 08:30:02 |
| 合計ジャッジ時間 | 4,564 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
import sys
sys.setrecursionlimit(3*10**5)
n=int(input())
d=int(input())
s=input()
def number(s):
global i
res=[0]*(d+1)
if '0'<=s[i]<='9':
res[0]=int(s[i])
i+=1
elif s[i]=='x':
res[1]=1
i+=1
return res
def add(x,y):
z=[0]*(d+1)
for j in range(d+1):
z[j]=x[j]+y[j]
return z
def differential(x):
y=[0]*(d+1)
for j in range(1,d+1):
y[j-1]=x[j]*j
return y
def prod(x,y):
z=[0]*(d+1)
for j in range(d+1):
for k in range(d+1):
if j+k<=d:
z[j+k]+=x[j]*y[k]
return z
def expr(s):
global i
res=term(s)
while i<len(s):
if s[i]=='+':
i+=1
res=add(res,term(s))
else:
break
return res
def term(s):
global i
res=factor(s)
while i<len(s):
if s[i]=='*':
i+=1
res=prod(res,factor(s))
else:
return res
return res
def factor(s):
global i
if s[i]=='d':
i+=2
res=expr(s)
if s[i]=='}':
i+=1
return differential(res)
return number(s)
i=0
print(*expr(s))
とりゐ