题解
【入门】求s=a+aa+aaa+aaaa+aa...a的值
1 条题解
-
0
解题思路
题目要求计算 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……
思路:
- 用一个变量 term 保存当前这一项,初始为 0
- 循环 a 次(因为一共 a 项):
- term = term × 10 + a,生成下一项
- 把 term 加到总和 sum 里
- 输出 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