#include <stdio.h>
#include <stdlib.h>
#include <math.h>  // M_PI を利用

#define NUM_RANDOM 12  // 各試行で使用する乱数のペア数

int main() {
    double a, b, s, shinchi;
    int count, n, i, trial, inside_count;

    // 真の値（4つの単位円で囲まれた領域の理論値）
    shinchi = M_PI - 2.0;

    // 試行ごとに乱数の個数を12に固定し、n回繰り返す
    for (n = 10; n < 100000; n = n * 5) {
        count = 0;
        s = 0.0;

        for (trial = 0; trial < n; trial++) {
            inside_count = 0;

            // 12個の乱数ペア (a, b) を生成して判定
            for (i = 0; i < NUM_RANDOM; i++) {
                a = (double)rand() / RAND_MAX;  // 乱数aを生成
                b = (double)rand() / RAND_MAX;  // 乱数bを生成

                // 4つの円に含まれるか判定
                if ((a * a + b * b <= 1.0) &&            // (0, 0) を中心とする円
                    ((a - 1) * (a - 1) + b * b <= 1.0) && // (1, 0) を中心とする円
                    (a * a + (b - 1) * (b - 1) <= 1.0) && // (0, 1) を中心とする円
                    ((a - 1) * (a - 1) + (b - 1) * (b - 1) <= 1.0)) { // (1, 1) を中心とする円
                    inside_count++;  // 円の中に入っている点をカウント
                }
            }

            // 試行ごとの成功割合を計算
            s += (double)inside_count / NUM_RANDOM;
            count++;
        }

        // 推定された面積の平均
        s /= count;

        // 理論値との誤差を表示
        printf("%d\t%f\n", n, fabs(s - shinchi));
    }

    return 0;
}
