結果
| 問題 |
No.550 夏休みの思い出(1)
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2024-03-12 01:51:05 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 629 ms / 2,000 ms |
| コード長 | 1,049 bytes |
| コンパイル時間 | 234 ms |
| コンパイル使用メモリ | 82,816 KB |
| 実行使用メモリ | 77,440 KB |
| 最終ジャッジ日時 | 2024-09-29 22:08:24 |
| 合計ジャッジ時間 | 24,180 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 55 |
ソースコード
# 割り切れる割り算、上の桁から。
def poly_div(X,Y):
ANS=[0]*(len(X)-len(Y)+1)
for i in range(len(X)-len(Y)+1):
if X[i]%Y[0]!=0:
return False
ANS[i]=X[i]//Y[0]
for j in range(len(Y)):
X[j+i]-=ANS[i]*Y[j]
return ANS
# 掛け算
def poly_mul(X,Y):
ANS=[0]*(len(X)+len(Y)-1)
for i in range(len(X)):
for j in range(len(Y)):
ANS[i+j]+=X[i]*Y[j]
return ANS
A,B,C=map(int,input().split())
for i in range(-10**6-5,10**6+5):
ANS=poly_div([1,A,B,C],[1,-i])
if ANS!=False:
a,b,c=ANS
if b*b-4*c<0:
continue
k=(-b+(b*b-4*c)**(1/2))/2
l=(-b-(b*b-4*c)**(1/2))/2
if abs(k-round(k))<0.00000000000001 and abs(l-round(l))<0.00000000000001:
L=[i,round(k),round(l)]
L.sort()
XX=poly_mul(poly_mul([1,-i],[1,-round(k)]),[1,-round(l)])
if XX[1:]==[A,B,C]:
print(*L)
exit()
titia