結果
問題 |
No.550 夏休みの思い出(1)
|
ユーザー |
![]() |
提出日時 | 2017-07-29 00:05:08 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 341 ms / 2,000 ms |
コード長 | 1,475 bytes |
コンパイル時間 | 135 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 11,008 KB |
最終ジャッジ日時 | 2024-10-11 05:34:12 |
合計ジャッジ時間 | 6,527 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 |
ソースコード
# coding: utf-8 import math def II(): return int(input()) def ILI(): return list(map(int, input().split())) def IAI(LINE): return [ILI() for __ in range(LINE)] def IDI(): return {key: value for key, value in ILI()} def read(): A, B, C = ILI() return A, B, C def calc_equation(A, B, C, x): if pow(x, 3) + A * pow(x, 2) + B * x + C == 0: return True else: return False def solve(A, B, C): ans_1 = None after = [] for i in range(0, int(math.sqrt(abs(C))) + 1): if i == 0: if calc_equation(A, B, C, i): ans_1 = i break else: div, mod = divmod(C, i) if mod == 0: after.append(div) after.append(-div) if calc_equation(A, B, C, i): ans_1 = i break if calc_equation(A, B, C, -i): ans_1 = -i break else: for aft in reversed(after): if calc_equation(A, B, C, aft): ans_1 = aft break _a = A + ans_1 _b = B + ans_1 * (A + ans_1) ans_2 = (-_a + math.sqrt(_a ** 2 - 4 * _b)) // 2 ans_3 = (-_a - math.sqrt(_a ** 2 - 4 * _b)) // 2 l_ans = [ans_1, ans_2, ans_3] ans = " ".join(map(str, map(int, sorted(l_ans)))) return ans def main(): params = read() print(solve(*params)) if __name__ == "__main__": main()