#include <iostream>
#include <vector>
using namespace std;
// Funkcja przygotowująca wielomian (stopień i współczynniki)
void przygotujWielomian(int &stopien, vector<int> &a) {
stopien = 3;
// współczynniki od a3 do a0
a.push_back(1); // a3
a.push_back(2); // a2
a.push_back(3); // a1
a.push_back(4); // a0
}
// Funkcja obliczająca wartość wielomianu schematem Hornera
int horner(const vector<int> &a, int stopien, int x) {
int wynik = a[0]; // a3
for (int i = 1; i <= stopien; i++) {
wynik = wynik * x + a[i];
}
return wynik;
}
int main() {
int stopien;
vector<int> a;
przygotujWielomian(stopien, a);
int x = 2;
int W = horner(a, stopien, x);
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(" << x << ") = " << W << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEgcHJ6eWdvdG93dWrEhWNhIHdpZWxvbWlhbiAoc3RvcGllxYQgaSB3c3DDs8WCY3p5bm5pa2kpCnZvaWQgcHJ6eWdvdHVqV2llbG9taWFuKGludCAmc3RvcGllbiwgdmVjdG9yPGludD4gJmEpIHsKICAgIHN0b3BpZW4gPSAzOwoKICAgIC8vIHdzcMOzxYJjenlubmlraSBvZCBhMyBkbyBhMAogICAgYS5wdXNoX2JhY2soMSk7IC8vIGEzCiAgICBhLnB1c2hfYmFjaygyKTsgLy8gYTIKICAgIGEucHVzaF9iYWNrKDMpOyAvLyBhMQogICAgYS5wdXNoX2JhY2soNCk7IC8vIGEwCn0KCi8vIEZ1bmtjamEgb2JsaWN6YWrEhWNhIHdhcnRvxZvEhyB3aWVsb21pYW51IHNjaGVtYXRlbSBIb3JuZXJhCmludCBob3JuZXIoY29uc3QgdmVjdG9yPGludD4gJmEsIGludCBzdG9waWVuLCBpbnQgeCkgewogICAgaW50IHd5bmlrID0gYVswXTsgIC8vIGEzCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3RvcGllbjsgaSsrKSB7CiAgICAgICAgd3luaWsgPSB3eW5payAqIHggKyBhW2ldOwogICAgfQoKICAgIHJldHVybiB3eW5pazsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgc3RvcGllbjsKICAgIHZlY3RvcjxpbnQ+IGE7CgogICAgcHJ6eWdvdHVqV2llbG9taWFuKHN0b3BpZW4sIGEpOwoKICAgIGludCB4ID0gMjsKICAgIGludCBXID0gaG9ybmVyKGEsIHN0b3BpZW4sIHgpOwoKICAgIGNvdXQgPDwgIlN0b3BpZW4gd2llbG9taWFudTogIiA8PCBzdG9waWVuIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJhMyA9ICIgPDwgYVswXSA8PCBlbmRsOwogICAgY291dCA8PCAiYTIgPSAiIDw8IGFbMV0gPDwgZW5kbDsKICAgIGNvdXQgPDwgImExID0gIiA8PCBhWzJdIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJhMCA9ICIgPDwgYVszXSA8PCBlbmRsOwogICAgY291dCA8PCAieCA9ICIgPDwgeCA8PCBlbmRsOwogICAgY291dCA8PCAiVygiIDw8IHggPDwgIikgPSAiIDw8IFcgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=