輸入數字 a 與項數 n,計算 s = a + aa + aaa + ... (n項)。例:a=2, n=5 → 2+22+222+2222+22222。
每項由上一項 ×10 + a 得到:
tn = tn*10 + a // 當前項
sn += tn // 累加和
#include
#include
int main() {
int a, n, count = 1;
long int sn = 0, tn = 0;
printf("please input a and n\n");
scanf("%d,%d", &a, &n);
printf("a=%d,n=%d\n", a, n);
while (count <= n) {
tn = tn*10 + a; // 關鍵:tn = tn + a 錯誤!應為 tn*10 + a
sn += tn;
count++;
}
printf("a+aa+...=%ld\n", sn);
getch();
return 0;
}
原文 tn=tn+a; a=a*10; 邏輯錯誤。正確遞推:
tn = 0*10 + a = atn = a*10 + a = aatn = aa*10 + a = aaa
輸入 2,5 → 輸出 a+aa+...=24690(驗證:2+22+222+2222+22222=24690)