#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
int main() {
const unsigned long long n = 100000000ULL; // liczba punktów
unsigned long long n0 = 0; // punkty w kole
mt19937_64 gen(random_device{}());
uniform_real_distribution<long double> dist(0.0L, 1.0L);
for (unsigned long long i = 0; i < n; ++i) {
long double x = dist(gen);
long double y = dist(gen);
if (x * x + y * y <= 1.0L)
n0++;
}
long double pi = 4.0L * n0 / n;
cout << fixed << setprecision(30);
cout << "Liczba punktów n = " << n << endl;
cout << "Liczba punktów w kole n0 = " << n0 << endl;
cout << "π ≈ " << pi << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHJhbmRvbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBuID0gMTAwMDAwMDAwVUxMOyAvLyBsaWN6YmEgcHVua3TDs3cKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuMCA9IDA7ICAgICAgICAgICAgICAgICAvLyBwdW5rdHkgdyBrb2xlCgogICAgbXQxOTkzN182NCBnZW4ocmFuZG9tX2RldmljZXt9KCkpOwogICAgdW5pZm9ybV9yZWFsX2Rpc3RyaWJ1dGlvbjxsb25nIGRvdWJsZT4gZGlzdCgwLjBMLCAxLjBMKTsKCiAgICBmb3IgKHVuc2lnbmVkIGxvbmcgbG9uZyBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGxvbmcgZG91YmxlIHggPSBkaXN0KGdlbik7CiAgICAgICAgbG9uZyBkb3VibGUgeSA9IGRpc3QoZ2VuKTsKCiAgICAgICAgaWYgKHggKiB4ICsgeSAqIHkgPD0gMS4wTCkKICAgICAgICAgICAgbjArKzsKICAgIH0KCiAgICBsb25nIGRvdWJsZSBwaSA9IDQuMEwgKiBuMCAvIG47CgogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMzApOwogICAgY291dCA8PCAiTGljemJhIHB1bmt0w7N3IG4gPSAiIDw8IG4gPDwgZW5kbDsKICAgIGNvdXQgPDwgIkxpY3piYSBwdW5rdMOzdyB3IGtvbGUgbjAgPSAiIDw8IG4wIDw8IGVuZGw7CiAgICBjb3V0IDw8ICLPgCDiiYggIiA8PCBwaSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9