#include <iostream>
#include <vector>
using namespace std;
// Funkcja obliczająca wartość wielomianu schematem Hornera
double horner(const vector<double>& a, int stopien, double x)
{
double wynik = a[0];
for (int i = 1; i <= stopien; i++)
{
wynik = wynik * x + a[i];
}
return wynik;
}
// Funkcja wypisująca dane i wynik
void wypisz(int stopien, const vector<double>& a, double x, double wynik)
{
cout << "stopien wielomianu: " << stopien << endl;
cout << "a3 = " << a[0] << endl;
cout << "a2 = " << a[1] << endl;
cout << "a1 = " << a[2] << endl;
cout << "a0 = " << a[3] << endl;
cout << "x = " << x << endl;
cout << "w(3) = " << wynik << endl;
}
int main()
{
int stopien = 3;
vector<double> a = {2, 3, 4, 5}; // a3, a2, a1, a0
double x = 3;
double wynik = horner(a, stopien, x);
wypisz(stopien, a, x, wynik);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEgb2JsaWN6YWrEhWNhIHdhcnRvxZvEhyB3aWVsb21pYW51IHNjaGVtYXRlbSBIb3JuZXJhCmRvdWJsZSBob3JuZXIoY29uc3QgdmVjdG9yPGRvdWJsZT4mIGEsIGludCBzdG9waWVuLCBkb3VibGUgeCkKewogICAgZG91YmxlIHd5bmlrID0gYVswXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHN0b3BpZW47IGkrKykKICAgIHsKICAgICAgICB3eW5payA9IHd5bmlrICogeCArIGFbaV07CiAgICB9CiAgICByZXR1cm4gd3luaWs7Cn0KCi8vIEZ1bmtjamEgd3lwaXN1asSFY2EgZGFuZSBpIHd5bmlrCnZvaWQgd3lwaXN6KGludCBzdG9waWVuLCBjb25zdCB2ZWN0b3I8ZG91YmxlPiYgYSwgZG91YmxlIHgsIGRvdWJsZSB3eW5paykKewogICAgY291dCA8PCAic3RvcGllbiB3aWVsb21pYW51OiAiIDw8IHN0b3BpZW4gPDwgZW5kbDsKICAgIGNvdXQgPDwgImEzID0gIiA8PCBhWzBdIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJhMiA9ICIgPDwgYVsxXSA8PCBlbmRsOwogICAgY291dCA8PCAiYTEgPSAiIDw8IGFbMl0gPDwgZW5kbDsKICAgIGNvdXQgPDwgImEwID0gIiA8PCBhWzNdIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJ4ID0gIiA8PCB4IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJ3KDMpID0gIiA8PCB3eW5payA8PCBlbmRsOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBzdG9waWVuID0gMzsKICAgIHZlY3Rvcjxkb3VibGU+IGEgPSB7MiwgMywgNCwgNX07IC8vIGEzLCBhMiwgYTEsIGEwCiAgICBkb3VibGUgeCA9IDM7CgogICAgZG91YmxlIHd5bmlrID0gaG9ybmVyKGEsIHN0b3BpZW4sIHgpOwogICAgd3lwaXN6KHN0b3BpZW4sIGEsIHgsIHd5bmlrKTsKCiAgICByZXR1cm4gMDsKfQ==