Кубічне рівняння

Перегляд у форматі PDF

Надіслати розв'язок

Бали: 4,00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Problem type

Кубічне рівняння ~ax^3+bx^2+cx+d=0~ задане чотирма своїми коефіцієнтами ~a~, ~b~, ~c~, ~d~ (~a\neq 0~). Як відомо, кубічне рівняння завжди має хоча б один дійсний корінь, а максимальна кількість різних дійсних коренів дорівнює 3. Напишіть програму, яка знайде усі дійсні корені кубічного рівняння.

Вхідні дані

В одному рядку через пропуски (пробіли) задано чотири числа ~a~, ~b~, ~c~, ~d~ — коефіцієнти рівняння. Усі чотири коефіцієнти є цілими числами, що не перевищують за модулем 1000, при цьому ~a\neq 0~ (решта коефіцієнтів можуть бути в тому числі й нулями).

Результати

Виведіть в один рядок через пробіли (пропуски) усі дійсні корені рівняння. Якщо рівняння має менше, ніж три, корені, дозволяється деякі з них повторити, але так, щоб:

  1. сумарна кількість виведених чисел була не більша трьох;
  2. кожне з виведених чисел було коренем рівняння (дозволяється абсолютна та/або відносна похибка до ~10^{-6}~);
  3. кожен з коренів був виведений хоча б один раз.

Приклади

Ввід

1 -3 3 -1

Вивід

1

Ввід

1 -6 11 -6

Вивід

1 2 3

Примітки

Правила зарахування відповідей слід сприймати буквально. Наприклад, у першому прикладі зараховуються також відповіді, де 1 виведена двічі чи тричі. Більш того, зараховується також відповідь з трьома «різними» коренями 1, 1.000000001 та 0.999999999. А три різні корені 1, 1.001 та 0.999 вже не зараховуються, бо похибка перевищує дозволену. А чотири «різні» корені 1, 1.0000000001, 1.0000000002 та 0.999999999 не зараховуються не через похибки, а через те, що їх чотири, а дозволено максимум три.


Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.