首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

OJ題解:求數列之和 - 平方根遞歸數列

     編輯:關於C語言

題目定義

數列首項為 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 足夠,若需更高精度可改 double
  • sqrt() 需 #include <math.h> 並編譯時連結 -lm
  • 多組測試資料用 while(scanf(...)!=EOF) 讀取
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved