首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 入門:計算 Sn = a + aa + aaa + ... (n 項) 的高效算法

     編輯:程式設計疑難解答

問題

給定數字 `a` (1-9) 和項數 `n`,求 `a + aa + aaa + ...` (共 n 項) 的和。例如 a=2, n=5 → 2+22+222+2222+22222。

算法思路

觀察規律:每項 = 前一項 × 10 + a。迭代累加即可,避免字符串拼接或冪運算。

代碼實現

#include <iostream>
using namespace std;

int main() {
    int a, n;
    cin >> a >> n;
    long long term = a; // 當前項
    long long sum = 0;
    for (int i = 1; i <= n; i++) {
        sum += term;
        term = term * 10 + a; // 生成下一項
    }
    cout << sum << endl;
    return 0;
}

複雜度

  • 時間 O(n),空間 O(1)。
  • 用 `long long` 防止溢出(n≤10 時 int 足夠,較大 n 需 big integer)。

擴展

若 a 可以是多位數(如 12),則 `term = term * (10^len) + a`,需預計算 `pow10 = 10^位數`。

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