#include <iostream>
#include <vector>
using namespace std;
// Funkcja wczytuje stopień wielomianu i współczynniki
vector<int> wczytajWielomian(int &stopien) {
cout << "Podaj stopien wielomianu: ";
cin >> stopien;
vector<int> wspolczynniki(stopien + 1); // od a0 do aN
for (int i = stopien; i >= 0; i--) {
cout << "Podaj wspolczynnik a" << i << ": ";
cin >> wspolczynniki[i];
}
return wspolczynniki;
}
// Funkcja oblicza wartość wielomianu metodą Hornera
int obliczWartoscHornera(const vector<int> &wspolczynniki, int stopien, int x) {
int wynik = wspolczynniki[stopien]; // zaczynamy od najwyższego współczynnika
for (int i = stopien - 1; i >= 0; i--) {
wynik = wynik * x + wspolczynniki[i];
}
return wynik;
}
int main() {
int stopien;
vector<int> wspolczynniki = wczytajWielomian(stopien);
int x;
cout << "Podaj wartosc x: ";
cin >> x;
int wartosc = obliczWartoscHornera(wspolczynniki, stopien, x);
// Wyświetlenie wyniku w podanym formacie
cout << "stopien wielomianu : " << stopien << " | ";
for (int i = stopien; i >= 0; i--) {
cout << "a" << i << "=" << wspolczynniki[i] << " | ";
}
cout << "x=" << x << " | W(" << x << ")=" << wartosc << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEgd2N6eXR1amUgc3RvcGllxYQgd2llbG9taWFudSBpIHdzcMOzxYJjenlubmlraQp2ZWN0b3I8aW50PiB3Y3p5dGFqV2llbG9taWFuKGludCAmc3RvcGllbikgewogICAgY291dCA8PCAiUG9kYWogc3RvcGllbiB3aWVsb21pYW51OiAiOwogICAgY2luID4+IHN0b3BpZW47CgogICAgdmVjdG9yPGludD4gd3Nwb2xjenlubmlraShzdG9waWVuICsgMSk7IC8vIG9kIGEwIGRvIGFOCgogICAgZm9yIChpbnQgaSA9IHN0b3BpZW47IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgY291dCA8PCAiUG9kYWogd3Nwb2xjenlubmlrIGEiIDw8IGkgPDwgIjogIjsKICAgICAgICBjaW4gPj4gd3Nwb2xjenlubmlraVtpXTsKICAgIH0KCiAgICByZXR1cm4gd3Nwb2xjenlubmlraTsKfQoKLy8gRnVua2NqYSBvYmxpY3phIHdhcnRvxZvEhyB3aWVsb21pYW51IG1ldG9kxIUgSG9ybmVyYQppbnQgb2JsaWN6V2FydG9zY0hvcm5lcmEoY29uc3QgdmVjdG9yPGludD4gJndzcG9sY3p5bm5pa2ksIGludCBzdG9waWVuLCBpbnQgeCkgewogICAgaW50IHd5bmlrID0gd3Nwb2xjenlubmlraVtzdG9waWVuXTsgLy8gemFjenluYW15IG9kIG5hand5xbxzemVnbyB3c3DDs8WCY3p5bm5pa2EKCiAgICBmb3IgKGludCBpID0gc3RvcGllbiAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgd3luaWsgPSB3eW5payAqIHggKyB3c3BvbGN6eW5uaWtpW2ldOwogICAgfQoKICAgIHJldHVybiB3eW5pazsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgc3RvcGllbjsKICAgIHZlY3RvcjxpbnQ+IHdzcG9sY3p5bm5pa2kgPSB3Y3p5dGFqV2llbG9taWFuKHN0b3BpZW4pOwoKICAgIGludCB4OwogICAgY291dCA8PCAiUG9kYWogd2FydG9zYyB4OiAiOwogICAgY2luID4+IHg7CgogICAgaW50IHdhcnRvc2MgPSBvYmxpY3pXYXJ0b3NjSG9ybmVyYSh3c3BvbGN6eW5uaWtpLCBzdG9waWVuLCB4KTsKCiAgICAvLyBXecWbd2lldGxlbmllIHd5bmlrdSB3IHBvZGFueW0gZm9ybWFjaWUKICAgIGNvdXQgPDwgInN0b3BpZW4gd2llbG9taWFudSA6ICIgPDwgc3RvcGllbiA8PCAiIHwgIjsKICAgIGZvciAoaW50IGkgPSBzdG9waWVuOyBpID49IDA7IGktLSkgewogICAgICAgIGNvdXQgPDwgImEiIDw8IGkgPDwgIj0iIDw8IHdzcG9sY3p5bm5pa2lbaV0gPDwgIiB8ICI7CiAgICB9CiAgICBjb3V0IDw8ICJ4PSIgPDwgeCA8PCAiIHwgVygiIDw8IHggPDwgIik9IiA8PCB3YXJ0b3NjIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K