結果
問題 | No.550 夏休みの思い出(1) |
ユーザー |
|
提出日時 | 2023-12-27 12:58:24 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 49 ms / 2,000 ms |
コード長 | 1,103 bytes |
コンパイル時間 | 548 ms |
コンパイル使用メモリ | 82,656 KB |
実行使用メモリ | 57,944 KB |
最終ジャッジ日時 | 2024-09-27 15:28:42 |
合計ジャッジ時間 | 4,670 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 |
ソースコード
from collections import * from itertools import * from functools import * from heapq import * import sys,math A,B,C = map(int,input().split()) a,b,c = 3,2*A,B def f(x): return x*(B + x*(A+x)) + C D = math.sqrt(b**2 - 4*a*c) p = (-b-D)/(2*a) q = (-b+D)/(2*a) x = -10**10 y = p ans = set() for _ in range(100): mid = (y+x)/2 if f(mid)>=0: y = mid else: x = mid x = math.floor(x)-2 for dx in range(10): if f(x+dx)==0: ans.add(x+dx) break x = q y = p for _ in range(100): mid = (y+x)/2 if f(mid)>=0: y = mid else: x = mid x = math.floor(y)-2 for dx in range(10): if f(x+dx)==0: if x+dx in ans: continue ans.add(x+dx) break x = q y = 10**10 for _ in range(100): mid = (y+x)/2 if f(mid)>=0: y = mid else: x = mid x = math.floor(x)-2 for dx in range(10): if f(x+dx)==0: if x+dx in ans: continue ans.add(x+dx) break ans = list(ans) ans.sort() if len(ans)==2: ans.append(-A-sum(ans)) ans.sort() print(*ans)