[题目描述]
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个一位的整数。
例如2+22+222+2222+22222(此时共有5个数相加)
☑输入
整数a和n(n个数相加,1<= n, a<=9)
☑输出
s的值
☑样例输入
2 2
☑样例输出
24
☑解题思路
根据题目给出的公式s=a+aa+aaa+aaaa+aa...a,可以将其分解为s=a+(a10+a)+(a100+a10+a)+...+(a10^(n-1)+a10^(n-2)+...+a10^0),其中n表示相加的个数。
可以观察到每一项中,除了最后一项以外,其余项都可以表示为(a10^i+a10^(i-1)+...+a10^0),即为等比数列求和公式的一部分,假设i为当前项的下标,那么该项的和为a(10^(i+1)-1)/9。
最后一项为a*10^(n-1)。
因此,我们只需要将每一项的和累加起来即可得到s的值。
☑答案
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a, n;
cin >> a >> n;
int s = 0;
int temp = a;
for (int i = 0; i < n; i++) {
s += temp;
temp = temp * 10 + a;
}
cout << s << endl;
return 0;
}
☑so,你学废了吗?
本文章为zovetr小面包有点甜撰写,如有侵权,请及时告知