#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
long double f(long double x) {
return sqrt(1.0L - x * x);
}
int main() {
const int n = 1000000; // więcej podziałów = większa dokładność
long double a = -1.0L;
long double b = 1.0L;
long double h = (b - a) / n;
long double suma = 0.5L * (f(a) + f(b));
for(int i = 1; i < n; i++) {
long double x = a + i * h;
suma += f(x);
}
long double pi = 2.0L * h * suma;
cout << fixed << setprecision(20);
cout << "Pi (metoda trapezow): " << pi << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgZG91YmxlIGYobG9uZyBkb3VibGUgeCkgewogICAgcmV0dXJuIHNxcnQoMS4wTCAtIHggKiB4KTsKfQoKaW50IG1haW4oKSB7CiAgICBjb25zdCBpbnQgbiA9IDEwMDAwMDA7ICAgLy8gd2nEmWNlaiBwb2R6aWHFgsOzdyA9IHdpxJlrc3phIGRva8WCYWRub8WbxIcKICAgIGxvbmcgZG91YmxlIGEgPSAtMS4wTDsKICAgIGxvbmcgZG91YmxlIGIgPSAxLjBMOwogICAgbG9uZyBkb3VibGUgaCA9IChiIC0gYSkgLyBuOwoKICAgIGxvbmcgZG91YmxlIHN1bWEgPSAwLjVMICogKGYoYSkgKyBmKGIpKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgbG9uZyBkb3VibGUgeCA9IGEgKyBpICogaDsKICAgICAgICBzdW1hICs9IGYoeCk7CiAgICB9CgogICAgbG9uZyBkb3VibGUgcGkgPSAyLjBMICogaCAqIHN1bWE7CgogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMjApOwogICAgY291dCA8PCAiUGkgKG1ldG9kYSB0cmFwZXpvdyk6ICIgPDwgcGkgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==