求Sn=a+aa+aaa+...+aa+⋯+an個a 之值,其中a是一個數字,n表示a的位數,n由鍵盤輸入。例如: 2+22+222+2222+22222 (此時n=5)
阿新 • • 發佈:2020-09-08
求\(S_n\)=a+aa+aaa+...+\(\overbrace{aa+\dots+a}^{n個a}\) 之值,其中a是一個數字,n表示a的位數,n由鍵盤輸入。例如:
2+22+222+2222+22222 (此時n=5)
答案解析:
該題目可以將數字拆分為 a * 10^n + 前一個數字
,例如:
2 = 2 * 10^0 + 0
: 預設2的前一個數字為0,也就是沒有任何值
22 = 2 * 10^1 + 2
: 22的前一個數字為2
222 = 2*10^2 + 22
:222的前一個數字為22
以此類推...
所以,在每次迴圈的時候,需要儲存下,上一次結果的值,方便下一次計算
還需要使用到C庫當中使用的pow函式,來計算某個數的n次方,我們在該題目當中使用的是10的n次方,n隨著迴圈的次數,以此遞增。
程式碼示例:
#include <stdio.h> #include <math.h> int main() { //n為a的個數 int n; double a, prev_sum = 0.0, total_sum = 0.0; printf("請輸入a的值以及n的值: "); scanf("%lf %d", &a, &n); //迴圈n次求總和 for (int i = 0; i < n; i++) { prev_sum += a * pow(10, i); total_sum += prev_sum; } printf("總和為:%lf\n", total_sum); return 0; }