C 語言練習題:實現函數 fun(n, a) 計算 a + aa + aaa + ... (n項),如 fun(3, 2) = 2 + 22 + 222 = 246。本文給出正確邏輯與代碼。
n:項數a:單個數字 (0-9)i 項 = a 重複 i 次構成的數字第 i 項可由第 i-1 項推導:
term_i = term_{i-1} * 10 + a
int fun(int n, int a) {
int sum = 0;
int term = 0;
for (int i = 1; i <= n; i++) {
term = term * 10 + a; // 構造當前項:1→a, 2→aa, 3→aaa...
sum += term;
}
return sum;
}
// 測試
int main() {
printf("%d\n", fun(3, 2)); // 246
printf("%d\n", fun(4, 1)); // 1234
return 0;
}
pow(10, i) 浮點運算導致精度問題i < n vs i <= n)
掌握「當前項從上一項推導」思想,可解決大數數列構造類問題。