#include <iostream>
#include <iomanip>
#include <cmath>
long double f(long double x) {
return 4.0L / (1.0L + x * x);
}
// Metoda prostokątów (lewostronna)
long double pi_rectangles(long long n) {
long double dx = 1.0L / n;
long double sum = 0.0L;
for (long long i = 0; i < n; i++) {
long double x = i * dx;
sum += f(x);
}
return sum * dx;
}
// Metoda trapezów
long double pi_trapezoids(long long n) {
long double dx = 1.0L / n;
long double sum = (f(0.0L) + f(1.0L)) / 2.0L;
for (long long i = 1; i < n; i++) {
long double x = i * dx;
sum += f(x);
}
return sum * dx;
}
int main() {
long long n;
std::cout << "Podaj liczbe podzialow (np. 100000000): ";
std::cin >> n;
long double pi_r = pi_rectangles(n);
long double pi_t = pi_trapezoids(n);
std::cout << std::fixed << std::setprecision(20);
std::cout << "PI (metoda prostokatow): " << pi_r << std::endl;
std::cout << "PI (metoda trapezow): " << pi_t << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKbG9uZyBkb3VibGUgZihsb25nIGRvdWJsZSB4KSB7CiAgICByZXR1cm4gNC4wTCAvICgxLjBMICsgeCAqIHgpOwp9CgovLyBNZXRvZGEgcHJvc3Rva8SFdMOzdyAobGV3b3N0cm9ubmEpCmxvbmcgZG91YmxlIHBpX3JlY3RhbmdsZXMobG9uZyBsb25nIG4pIHsKICAgIGxvbmcgZG91YmxlIGR4ID0gMS4wTCAvIG47CiAgICBsb25nIGRvdWJsZSBzdW0gPSAwLjBMOwoKICAgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgbG9uZyBkb3VibGUgeCA9IGkgKiBkeDsKICAgICAgICBzdW0gKz0gZih4KTsKICAgIH0KCiAgICByZXR1cm4gc3VtICogZHg7Cn0KCi8vIE1ldG9kYSB0cmFwZXrDs3cKbG9uZyBkb3VibGUgcGlfdHJhcGV6b2lkcyhsb25nIGxvbmcgbikgewogICAgbG9uZyBkb3VibGUgZHggPSAxLjBMIC8gbjsKICAgIGxvbmcgZG91YmxlIHN1bSA9IChmKDAuMEwpICsgZigxLjBMKSkgLyAyLjBMOwoKICAgIGZvciAobG9uZyBsb25nIGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgbG9uZyBkb3VibGUgeCA9IGkgKiBkeDsKICAgICAgICBzdW0gKz0gZih4KTsKICAgIH0KCiAgICByZXR1cm4gc3VtICogZHg7Cn0KCmludCBtYWluKCkgewogICAgbG9uZyBsb25nIG47CgogICAgc3RkOjpjb3V0IDw8ICJQb2RhaiBsaWN6YmUgcG9kemlhbG93IChucC4gMTAwMDAwMDAwKTogIjsKICAgIHN0ZDo6Y2luID4+IG47CgogICAgbG9uZyBkb3VibGUgcGlfciA9IHBpX3JlY3RhbmdsZXMobik7CiAgICBsb25nIGRvdWJsZSBwaV90ID0gcGlfdHJhcGV6b2lkcyhuKTsKCiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpmaXhlZCA8PCBzdGQ6OnNldHByZWNpc2lvbigyMCk7CgogICAgc3RkOjpjb3V0IDw8ICJQSSAobWV0b2RhIHByb3N0b2thdG93KTogIiA8PCBwaV9yIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCAiUEkgKG1ldG9kYSB0cmFwZXpvdyk6ICAgICIgPDwgcGlfdCA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0=