top1编程
← 返回题目
题解

【入门】求s=a+aa+aaa+aaaa+aa...a的值

1 条题解

  • 0
    @ 2026-7-31 11:31:10

    解题思路

    题目要求计算 s = a + aa + aaa + aaaa + ... 的值,一共有 a 项。

    比如 a=2:s = 2 + 22 = 24;a=5:s = 5+55+555+5555+55555 = 61725。

    关键:怎么生成每一项?

    每一项都是在上一项的末尾再加一个 a:

    • 第 1 项:a
    • 第 2 项:a×10 + a = aa
    • 第 3 项:aa×10 + a = aaa

    所以用 term = term × 10 + a 就能从 a 一步步生成 aa、aaa、aaaa……

    思路:

    1. 用一个变量 term 保存当前这一项,初始为 0
    2. 循环 a 次(因为一共 a 项):
      • term = term × 10 + a,生成下一项
      • 把 term 加到总和 sum 里
    3. 输出 sum

    举个例子 a=5:

    • term=5,sum=5
    • term=55,sum=60
    • term=555,sum=615
    • term=5555,sum=6170
    • term=55555,sum=61725

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int a;
        cin >> a;
    
        int sum = 0;
        int term = 0;
    
        for (int i = 1; i <= a; i++) {
            term = term * 10 + a;  // 生成 a, aa, aaa...
            sum += term;           // 累加
        }
    
        cout << sum << endl;
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(N),N 为项数(等于 a)
    • 空间复杂度:O(1)
    • 1