Условие
Даны натуральное число [latex]n[/latex], действительный числа [latex]x[/latex], [latex]a_{n}, a_{n-1}, \ldots, a_{0}[/latex]. Вычислить используя схему Горнера, значение [latex]a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + \cdots + a_{0}.[/latex]
[latex]a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + \cdots + a_{0} = \left( \ldots \left(a_{n}{x} + a_{n-1}\right)x + \cdots + a_{1}\right)x + a_{0}.[/latex]
$latex n$ | $latex x$ | $latex { a }_{ n }$ | $latex { a }_{ n-1 }$ | $latex { a }_{ n-2 }$ | $latex { a }_{ n-3 }$ | $latex s$ |
3 | 2 | 5 | 4 | 3 | 2 | 64 |
2 | 1 | 3 | 4 | 7 | _ | 14 |
3 | 0 | 3 | 4 | 12 | 8 | 8 |
3 | 5 | 0 | 10 | 12 | 8 | 318 |
1 | 5 | 2 | 1 | _ | _ | 11 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package lab4; import java.util.Scanner; public class Lab4 { public static void main(String[] args) { Scanner scanIn=new Scanner(System.in); int n, x; n = scanIn.nextInt(); x = scanIn.nextInt(); int a[] = new int[n + 1]; for (int i = n; i >= 0; --i) { a[i] = scanIn.nextInt(); } int s = a[n]; for (int i = 1; i <= n; ++i) { s *= x; s += a[n - i]; } System.out.println("S = " + s); } } |
Решение
Начинаем с коэффициента с рядом с $latex X$-ом c максимальной степенью, у нас это элемент $latex { a }_{ n }$, мы последовательно умножаем его (коэффициент) на $latex X$, а потом прибавляем следующий считанный коэффициент и сохраняем полученное значение в переменной.
Это был пример решения для$latex n$=2 , если же$latex X$ > 2 , то мы должны выполнить алгоритм для $latex n$=2, после чего $latex X$ — 2 раз умножать полученное в переменной значение на $latex X$ и прибавлять последующий элемент.
Исправьте сначала эти замечания.
— Массивы при потоковой обработке использовать нельзя.
— Сделайте ссылку для запуска кода, например на ideone.com.