Сторона вчителя математики#5835

Сторона вчителя математики

5 секунд
64 мегабайти
Дуже складна

Одним із завдань, які студенти регулярно виконують на уроках математики, є розв'язання поліноміального рівняння. Наприклад, маючи поліном X^2 - 4X + 1, потрібно знайти його корені (2 \pm \sqrt{3}).

Якщо завдання студентів полягає в тому, щоб знайти корені заданого полінома, то завдання вчителя полягає в тому, щоб знайти поліном, який має заданий корінь. Пані Гальсоне - захоплена вчителька математики, яка втомилася від пошуку розв'язків квадратних рівнянь, які є такими простими, як a + b. Вона хотіла створити рівняння вищого ступеня, розв'язки яких є трохи складнішими. Як зазвичай у задачах на уроках математики, вона хоче зберегти всі коефіцієнти цілими числами і зберегти ступінь полінома якомога меншим (за умови, що він має заданий корінь). Будь ласка, допоможіть їй, написавши програму, яка виконує завдання з боку вчителя.

Вам дано число у вигляді:

t = \sqrt[m]{a} + \sqrt[n]{b}

де і - різні прості числа, а і - цілі числа, більші за .

У цій задачі вам потрібно знайти мінімальний поліном на цілих числах для , який є поліномом

F(X) = a_dX^d + a_{d-1}X^{d-1} + \cdots + a_1X + a_0

що задовольняє наступні умови.

  1. Коефіцієнти a_0, ..., a_d є цілими числами і a_d > 0.

  2. F(t) = 0.

  3. Ступінь є мінімальним серед поліномів, що задовольняють дві попередні умови.

  4. є примітивним. Тобто, коефіцієнти a_0, ..., a_d не мають спільних дільників, більших за один.

Наприклад, мінімальний поліном для \sqrt{2} + \sqrt{3} на цілих числах - це F(X) = X^4-10X^2+1. Перевірка F(t) = 0 є такою ж простою, як і наступна (\alpha = \sqrt{3}, \beta = \sqrt{2}).

F(t) = (\alpha + \beta)^4 - 10(\alpha + \beta)^2 + 1
= (\alpha^4 + 4\alpha^3\beta + 6\alpha^2\beta^2 + 4\alpha\beta^3 + \beta^4) - 10(\alpha^2 + 2\alpha\beta + \beta^2) + 1
= 9 + 12\alpha\beta + 36 + 8\alpha\beta + 4 - 10(3 + 2\alpha\beta + 2) + 1
= (9 + 36 + 4 - 50 + 1) + (12 + 8 - 20)\alpha\beta = 0

Перевірка того, що ступінь є насправді мінімальним, є трохи складнішою. На щастя, за умовою, даною в цій задачі, а саме, що і - різні прості числа, а і більші за один, ступінь мінімального полінома завжди дорівнює . Більше того, він завжди є монічним. Тобто, коефіцієнт його найвищого степеня (a_d) дорівнює одиниці.

Вхідні дані

Вхід складається з кількох наборів даних, кожен у наступному форматі.

Цей рядок представляє \sqrt[m]{a} + \sqrt[n]{b}. Останній набір даних супроводжується одним рядком, що складається з чотирьох нулів. Числа в одному рядку розділені одним пробілом.

Кожен набір даних задовольняє наступні умови.

  1. m + n \le 4.

  2. mn \le 20.

  3. Коефіцієнти відповіді a_0, ..., a_d знаходяться в межах від (-2^{31} + 1) до (2^{31} - 1), включно.

Вихідні дані

Для кожного набору даних виведіть коефіцієнти його мінімального полінома на цілих числах

F(X) = a_dX^d + a_{d-1}X^{d-1} + \cdots + a_1X + a_0,

у наступному форматі.

a_d\ a_{d-1}\ \ldots\ a_1\ a_0

Ненегативні цілі числа повинні бути надруковані без знака (+ або -). Числа в одному рядку повинні бути розділені одним пробілом, і жодні інші символи або зайві пробіли не повинні з'являтися у виході.

Приклади

Приклад 1

Loading
Loading