题目大意
求解无限连分数 x = a + 1/(a + 1/(a + …)) 的值。即求解方程 x = a + 1/x 的正根。
AC代码 牛顿迭代法
x=a+a+a+a+⋯111
因为是无限的递归,可以把a下面的看成一个整体,其实也是x,然后你就把这个问题转化成了求一元二次方程。
x=a+x1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <iostream> #include <iomanip> #include <cmath> using namespace std;
int T; double a;
double solve(double a) { return (a + sqrt(a * a + 4)) / 2; }
int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> T; for(int _ = 1; _ <= T; _++) { cin >> a; double ans = solve(a); cout << setprecision(24) << ans << endl; }
return 0; }
|