#include <stdio.h>
#include <math.h> // sqrt関数を使用するために必要
// 関数 f(x) = sqrt(x) を定義
double f(double x) {
}
int main() {
const int N = 20; // 最大分割数
double d, s, tru, e; // 各種変数
int m; // 分割数
tru = 9.0; // 面積の真値 (問題に基づく)
// 結果を表示 (分割数、誤差)
for (m = 2; m <= N; m++) {
d = 1.0 / m; // 区間幅
s = 0.0; // 面積の初期化
// 台形公式による面積計算
for (int a = 0; a < m; a++) {
s += (f(a * d) + f((a + 1) * d)) * d / 2.0;
}
// 面積のスケーリング
s *= 9.0; // 問題に合わせて面積をスケールアップ
e
= fabs(s
- tru
); // 誤差の絶対値 printf("%d\t%.6f\n", m
, e
); // 分割数、誤差を出力 }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+IC8vIHNxcnTplqLmlbDjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoEKCi8vIOmWouaVsCBmKHgpID0gc3FydCh4KSDjgpLlrprnvqkKZG91YmxlIGYoZG91YmxlIHgpIHsKICAgIHJldHVybiBzcXJ0KHgpOwp9CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IGludCBOID0gMjA7IC8vIOacgOWkp+WIhuWJsuaVsAogICAgZG91YmxlIGQsIHMsIHRydSwgZTsgLy8g5ZCE56iu5aSJ5pWwCiAgICBpbnQgbTsgICAgICAgICAgICAgIC8vIOWIhuWJsuaVsAoKICAgIHRydSA9IDkuMDsgICAgICAgICAgLy8g6Z2i56mN44Gu55yf5YCkICjllY/poYzjgavln7rjgaXjgY8pCgogICAgLy8g57WQ5p6c44KS6KGo56S6ICjliIblibLmlbDjgIHoqqTlt64pCiAgICBwcmludGYoIuWIhuWJsuaVsFx06Kqk5beuXG4iKTsKICAgIGZvciAobSA9IDI7IG0gPD0gTjsgbSsrKSB7CiAgICAgICAgZCA9IDEuMCAvIG07IC8vIOWMuumWk+W5hQogICAgICAgIHMgPSAwLjA7ICAgICAvLyDpnaLnqY3jga7liJ3mnJ/ljJYKCiAgICAgICAgLy8g5Y+w5b2i5YWs5byP44Gr44KI44KL6Z2i56mN6KiI566XCiAgICAgICAgZm9yIChpbnQgYSA9IDA7IGEgPCBtOyBhKyspIHsKICAgICAgICAgICAgcyArPSAoZihhICogZCkgKyBmKChhICsgMSkgKiBkKSkgKiBkIC8gMi4wOwogICAgICAgIH0KCiAgICAgICAgLy8g6Z2i56mN44Gu44K544Kx44O844Oq44Oz44KwCiAgICAgICAgcyAqPSA5LjA7IC8vIOWVj+mhjOOBq+WQiOOCj+OBm+OBpumdouepjeOCkuOCueOCseODvOODq+OCouODg+ODlwoKICAgICAgICBlID0gZmFicyhzIC0gdHJ1KTsgLy8g6Kqk5beu44Gu57W25a++5YCkCiAgICAgICAgcHJpbnRmKCIlZFx0JS42ZlxuIiwgbSwgZSk7IC8vIOWIhuWJsuaVsOOAgeiqpOW3ruOCkuWHuuWKmwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==