5-38 数列求和-加强版 (20分)
给定某数字AA(1\le A\le 91≤A≤9)以及非负整数NN(0\le N\le 1000000≤N≤100000),求数列之和S = A + AA + AAA + \cdots + AA\cdots AS=A+AA+AAA+⋯+AA⋯A(NN个AA)。例如A=1A=1, N=3N=3时,S = 1 + 11 + 111 = 123S=1+11+111=123。
输入格式:
输入数字AA与非负整数NN。
输出格式:
输出其NN项数列之和SS的值。
输入样例:
1 3
输出样例:
123
#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#define INF 100000000
using namespace std;
int a,n;
int ans[500000];
int main()
{
scanf("%d%d",&a,&n);
if(n==0)
{
printf("0\n");
return 0;
}
int cnt=n;
for(int i=0;i<n;i++)
{
ans[i]=cnt*a;
cnt--;
}
int j=0;
while(ans[j]>0)
{
ans[j+1]+=ans[j]/10;
ans[j]=ans[j]%10;
j++;
}
reverse(ans,ans+j);
for(int i=0;i<j;i++)
{
printf("%d",ans[i]);
}
printf("\n");
return 0;
}