數列首項為 n,後續各項為前一項平方根:
a₁ = n, a₂ = √n, a₃ = √(√n), ...
求前 m 項和,保留小數點後2位。
迭代累加,每輪更新 t = sqrt(t) 作為下一項:
sum = t = n;
for (i = 1; i < m; i++) {
sum += sqrt(t);
t = sqrt(t);
}
#include <stdio.h>
#include <math.h>
int main() {
int n, m, i;
float t, sum;
while (scanf("%d %d", &n, &m) != EOF) {
sum = t = n * 1.0f;
for (i = 1; i < m; i++) {
sum += sqrt(t);
t = sqrt(t);
}
printf("%.2f\n", sum);
}
return 0;
}
輸入: 81 4 項次: 81, 9, 3, 1.732... 和: 81 + 9 + 3 + 1.732 = 94.732 → 94.73 ✓ 輸入: 2 2 項次: 2, 1.414... 和: 3.414 → 3.41 ✓
float 足夠,若需更高精度可改 doublesqrt() 需 #include <math.h> 並編譯時連結 -lmwhile(scanf(...)!=EOF) 讀取