題目描述
給定某數字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的個位就是,十位是,百位是,所以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;
}