给定某数字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的值。
long long 也无法解决越界问题,只能将每一位存到数组中
#include<iostream>
using namespace std;
int main(){
int a,n;
cin>>a>>n;
int s[1000000]={0};
int c=n;//比如第一位是3个1的和;第二位是2个1的和,c用来记录几个数的和
for(int i=1;i<=n;i++){
s[i]+=a*c;
if(s[i]>9){
s[i+1]+=s[i]/10;//进位
s[i]=s[i]%10;//每一位都小于等于9
}
c--;//c减少
}
if(s[n+1]||n==0) cout<<s[n+1];
//有可能最后多进一位数;处理当n为0的情况
for(int i=n;i>0;i--){
cout<<s[i];
}
}