### 思路
1. 输入 `a`。
2. 如果 `a` 为 0,直接输出 0.0000。
3. 初始化 `x` 为 `a`。
4. 使用迭代公式 `x(n+1) = 1/2 * (x(n) + a / x(n))` 进行迭代。
5. 当相邻两次迭代的 `x` 的差的绝对值小于 `1E-5` 时停止迭代。
6. 输出结果,保留四位小数。
### 伪代码
1. 输入 `a`
2. 如果 `a == 0`,输出 `0.0000` 并返回
3. 初始化 `x = a`
4. 重复以下步骤直到 `|x(n+1) - x(n)| < 1E-5`:
- 计算 `x_new = 1/2 * (x + a / x)`
- 如果 `|x_new - x| < 1E-5`,则停止迭代
- 否则,更新 `x = x_new`
5. 输出 `x`,保留四位小数
### C++代码
#include <iostream>
#include <iomanip>
#include <cmath>
int main() {
double a;
std::cin >> a;
if (a == 0) {
std::cout << std::fixed << std::setprecision(4) << 0.0000 << std::endl;
return 0;
}
double x = a;
double x_new;
const double epsilon = 1E-5;
do {
x_new = 0.5 * (x + a / x);
if (std::fabs(x_new - x) < epsilon) {
break;
}
x = x_new;
} while (true);
std::cout << std::fixed << std::setprecision(4) << x_new << std::endl;
return 0;
}