はまやんはまやんはまやん

hamayanhamayan's blog

面積の求め方 [yukicoder 1009]

https://yukicoder.me/problems/no/1009

解説

https://yukicoder.me/submissions/447469

ヒントとして書かれている区分求積法を実装することで答えた。
座標が微妙にずれている気もするが、誤差の範囲に収まってくれるだろう。
104くらいの分割でよさそうだが、念のため106で分割しておいた。

余談であるが、いつも106みたいな数を書くときに1010101のように書いている。
ピッタリよりもマージンをとっておいたほうが、配列を作ったときに更新でちょっと便利になったり、
桁が見やすいといった効果がある。
後者は、桁区切り文字を使ってもいいんだけど、なんとなく入力のしやすさからこっちを使ってる。
C++14 数値リテラルの桁区切り文字 - Faith and Brave - C++で遊ぼう

double a, b;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> a >> b;

    double ans = 0;
    rep(i, 0, 1010101) {
        double d = (b - a) / 1010101;
        double x = a + (b - a) * i / 1010101;
        ans += abs((x - a) * (x - b)) * d;
    }
    printf("%.10f\n", ans);
}