求Sn=a+aa+aaa+...+aa+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;
}