给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。
输入格式:
输入数字A与非负整数N。
输出格式:
输出其N项数列之和S的值。
输入样例:
1 3
输出样例:
123
PS:不可能用整数的,一定要用数组
我们可以累加:
__1
_11
111
末尾的一位是1*3,中间是1*2,最前面的是1*1
再如:
__9
_99
999
末尾是3*9=27%10=7,中间是2*9+27/10=18+2=20%10=0,在前面是1*9+20/10=9+2=11%10=1,最前面是1
以此类推:代码如下:
#include<iostream> using namespace std; int main() { int a, n; cin >> a >> n; int s[100005]={0}; for (int i = 0; i < n; i++) { s[i] += a * (n - i); s[i + 1] += s[i] / 10; s[i] %= 10; } if (n == 0) { cout << "0"; } else { for (int i = n; i >= 0; i--) { if (s[n] == 0 && i == n) { continue; } cout << s[i]; } } }