Построение многочленов
Графические калькуляторы стали популярными среди старшеклассников, так как они позволяют легко строить графики функций. Однако, их процессоры не всегда быстры. В этой задаче вам нужно реализовать метод, который ускорит построение графика многочлена.
Дан многочлен p(x) = a_nx^n + ... + a_1x + a_0 степени n. Мы хотим построить его график в m целых точках x = 0, 1, ..., m−1. Прямое вычисление в этих точках требует mn умножений и mn сложений.
Для ускорения вычислений можно использовать ранее полученные результаты. Например, если p(x) = a_1x + a_0 и p(i) уже вычислено, то p(i + 1) = p(i) + a_1. Таким образом, каждое следующее значение p(x) можно получить с помощью одного сложения.
В общем случае, p(i + 1) можно вычислить из p(i) с помощью n сложений после соответствующей инициализации. Если правильно инициализировать константы C_0, C_1, ..., C_n, можно вычислить p(i) следующим образом:
p(0) = C_0; t_1 = C_1; ... t_n = C_n;
for i from 1 to m-1 do
p(i) = p(i-1) + t_1;
t_1 = t_1 + t_2;
t_2 = t_2 + t_3;
...
...
t_(n-1) = t_(n-1) + t_n;
end
Например, для p(x) = a_1x + a_0 можно инициализировать C_0 = a_0 и C_1 = a_1.
Ваша задача — вычислить константы C_0, C_1, ..., C_n для указанного псевдокода, чтобы получить правильные значения p(i) при i = 0, ..., m − 1.
Входные данные
Входные данные состоят из одной строки. Первое число — это n, где 1 ≤ n ≤ 6. Далее следуют n+1 целых коэффициентов a_n, ..., a_1, a_0. Гарантируется, что |a_i| ≤ 50 для всех i, и a_n ≠ 0.
Выходные данные
Выведите целые числа C_0, C_1, ..., C_n, разделенные пробелами.