无锡网站排名公司/百度推广入口官网
题目描述
给定某数字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
解题思路
S的每一位都等于(i * A + t)% 10(注意要考虑进位,其中t是进位),比如说,A=1, N=3时,S的个位就是3∗1=33*1=33∗1=3,十位是2∗1=22*1=22∗1=2,百位是1∗1=11*1=11∗1=1,所以S就是123。由于题目中给的数会超出整形的范围,因此,我们需要用数组来存结果的每一位。
AC代码
#include <iostream>
using namespace std;
int arr[100010];
int main()
{int a; int n;cin >> a >> n;if (n == 0){cout << 0;}else{int t = 0;int p = 0;for (int i = n; i >= 1; --i){int tmp = a * i + t;if (tmp >= 10){t = tmp / 10;arr[p++] = tmp % 10;}else{t = 0;arr[p++] = tmp;}}if (t != 0){arr[p++] = t;}for (int i = p-1; i >= 0; --i){cout << arr[i];}}return 0;
}