yukicoder No.454 逆2乗和
問題URL : http://yukicoder.me/problems/no/454
問題概要
非負実数xが与えられる.
を計算せよ.
解法
厳密解を求めるのは難しいので近似解を求める.
xの整数部分をa,小数部分をbとする.
問題文に書かれている公式を用いて計算式を変形すると
となる.
あとはをどれくらい大きくすれば許容誤差に収まるかを考ればよい.
なので
とすれば誤差は以下となる(気がする).
コード
void mainmain() { double x; cin >> x; int a = x; double b = x - a; double sum1 = 0; double sum2 = 0; int N = 1e5; reep(i, 1 + a, N) { sum1 += pow(1. / (i + b), 2); } reep(i, 1, N) { sum2 += pow(1. / i, 2); } double ans = sum1 + pow(acos(-1), 2) / 6 - sum2; cout << ans << endl; }
コメント
解説を見たら想定別解と方針は似てました.(想定別解はおそらく間違いが含まれている)