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

HDU 求數列的和:遞歸平方根數列求和(保留兩位小數)

     編輯:關於C語言

題目描述

數列定義:首項為 n,後續各項為前一項的平方根。求前 m 項和,精度保留小數點後兩位。

  • 輸入:多組 n (n<10000)、m (m<1000)
  • 輸出:每組一行,格式 %.2lf

樣例推導

Input:  81 4
項1: 81
項2: √81 = 9
項3: √9  = 3
項4: √3 ≈ 1.732
和 = 81 + 9 + 3 + 1.732 = 94.732 → 94.73

Input:  2 2
項1: 2
項2: √2 ≈ 1.414
和 = 3.414 → 3.41

解題思路

  1. 讀入 n, m 直到 EOF
  2. sum = n,current = n
  3. 循環 m-1 次:current = sqrt(current),累加到 sum
  4. 輸出 printf("%.2lf\n", sum)

參考代碼

#include <stdio.h>
#include <math.h>

int main() {
    int m, i;
    double n, sum;
    while (scanf("%lf %d", &n, &m) != EOF) {
        sum = n;
        for (i = 1; i < m; i++) {
            n = sqrt(n);      // 更新 n 為平方根
            sum += n;
        }
        printf("%.2lf\n", sum);
    }
    return 0;
}

關鍵點

  • sqrt 需 math.h,參數/返回值均為 double
  • 直接在循環中更新 n 避免額外變量
  • %.2lf 自動四捨五入,符合題目精度要求
  • 數據範圍小,無性能問題

數學觀察

數列單調遞減並快速收斂至 1。當 n=1 時後續全為 1,和為 m。大 n 時前幾項貢獻主要值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved