#include <iostream>
#include <cmath>
int main() {
double c = 15.0; // liczba, której pierwiastek szukamy
double eps = 0.001; // dokładność
double a = 0.0; // początek przedziału
double b = (c > 1) ? c : 1; // koniec przedziału (minimum 1 dla c < 1)
double x; // przybliżenie pierwiastka
int iterations = 0; // liczba iteracji
// Metoda bisekcji
while ((b - a) > eps) {
x = (a + b) / 2.0; // środek przedziału
if (x * x > c) {
b = x; // pierwiastek jest mniejszy
} else {
a = x; // pierwiastek jest większy
}
iterations++;
}
x = (a + b) / 2.0; // ostateczne przybliżenie
std::cout << "Przybliżony pierwiastek kwadratowy z " << c << " = " << x << std::endl;
std::cout << "Liczba iteracji: " << iterations << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBjID0gMTUuMDsgICAgICAgLy8gbGljemJhLCBrdMOzcmVqIHBpZXJ3aWFzdGVrIHN6dWthbXkKICAgIGRvdWJsZSBlcHMgPSAwLjAwMTsgICAgLy8gZG9rxYJhZG5vxZvEhwogICAgZG91YmxlIGEgPSAwLjA7ICAgICAgICAvLyBwb2N6xIV0ZWsgcHJ6ZWR6aWHFgnUKICAgIGRvdWJsZSBiID0gKGMgPiAxKSA/IGMgOiAxOyAvLyBrb25pZWMgcHJ6ZWR6aWHFgnUgKG1pbmltdW0gMSBkbGEgYyA8IDEpCiAgICBkb3VibGUgeDsgICAgICAgICAgICAgIC8vIHByenlibGnFvGVuaWUgcGllcndpYXN0a2EKICAgIGludCBpdGVyYXRpb25zID0gMDsgICAgLy8gbGljemJhIGl0ZXJhY2ppCgogICAgLy8gTWV0b2RhIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSA+IGVwcykgewogICAgICAgIHggPSAoYSArIGIpIC8gMi4wOyAgLy8gxZtyb2RlayBwcnplZHppYcWCdQogICAgICAgIGlmICh4ICogeCA+IGMpIHsKICAgICAgICAgICAgYiA9IHg7ICAvLyBwaWVyd2lhc3RlayBqZXN0IG1uaWVqc3p5CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYSA9IHg7ICAvLyBwaWVyd2lhc3RlayBqZXN0IHdpxJlrc3p5CiAgICAgICAgfQogICAgICAgIGl0ZXJhdGlvbnMrKzsKICAgIH0KCiAgICB4ID0gKGEgKyBiKSAvIDIuMDsgIC8vIG9zdGF0ZWN6bmUgcHJ6eWJsacW8ZW5pZQoKICAgIHN0ZDo6Y291dCA8PCAiUHJ6eWJsacW8b255IHBpZXJ3aWFzdGVrIGt3YWRyYXRvd3kgeiAiIDw8IGMgPDwgIiA9ICIgPDwgeCA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgIkxpY3piYSBpdGVyYWNqaTogIiA8PCBpdGVyYXRpb25zIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=