#include <iostream>
#include <iomanip>
#include <cmath>
long double f(long double x) {
return sqrtl(1.0L - x * x);
}
// Metoda prostokątów (lewa)
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 4.0L * 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 4.0L * 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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKbG9uZyBkb3VibGUgZihsb25nIGRvdWJsZSB4KSB7CiAgICByZXR1cm4gc3FydGwoMS4wTCAtIHggKiB4KTsKfQoKLy8gTWV0b2RhIHByb3N0b2vEhXTDs3cgKGxld2EpCmxvbmcgZG91YmxlIHBpX3JlY3RhbmdsZXMobG9uZyBsb25nIG4pIHsKICAgIGxvbmcgZG91YmxlIGR4ID0gMS4wTCAvIG47CiAgICBsb25nIGRvdWJsZSBzdW0gPSAwLjBMOwoKICAgIGZvciAobG9uZyBsb25nIGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgbG9uZyBkb3VibGUgeCA9IGkgKiBkeDsKICAgICAgICBzdW0gKz0gZih4KTsKICAgIH0KCiAgICByZXR1cm4gNC4wTCAqIHN1bSAqIGR4Owp9CgovLyBNZXRvZGEgdHJhcGV6w7N3CmxvbmcgZG91YmxlIHBpX3RyYXBlem9pZHMobG9uZyBsb25nIG4pIHsKICAgIGxvbmcgZG91YmxlIGR4ID0gMS4wTCAvIG47CiAgICBsb25nIGRvdWJsZSBzdW0gPSAoZigwLjBMKSArIGYoMS4wTCkpIC8gMi4wTDsKCiAgICBmb3IgKGxvbmcgbG9uZyBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGxvbmcgZG91YmxlIHggPSBpICogZHg7CiAgICAgICAgc3VtICs9IGYoeCk7CiAgICB9CgogICAgcmV0dXJuIDQuMEwgKiBzdW0gKiBkeDsKfQoKaW50IG1haW4oKSB7CiAgICBsb25nIGxvbmcgbjsKCiAgICBzdGQ6OmNvdXQgPDwgIlBvZGFqIGxpY3piZSBwb2R6aWFsb3cgKG5wLiAxMDAwMDAwMDApOiAiOwogICAgc3RkOjpjaW4gPj4gbjsKCiAgICBsb25nIGRvdWJsZSBwaV9yID0gcGlfcmVjdGFuZ2xlcyhuKTsKICAgIGxvbmcgZG91YmxlIHBpX3QgPSBwaV90cmFwZXpvaWRzKG4pOwoKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmZpeGVkIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKDIwKTsKCiAgICBzdGQ6OmNvdXQgPDwgIlBJIChtZXRvZGEgcHJvc3Rva2F0b3cpOiAiIDw8IHBpX3IgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJQSSAobWV0b2RhIHRyYXBlem93KTogICAgIiA8PCBwaV90IDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==