给定某数字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
//这道题作为加强版的问题在于,N大到一定程度,超过范围,那么我们可以用数组解决
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- int i,a,n,m=0;
- int s[100001];
- cin>>a>>n;
- if(n==0) cout<<"0";
- else{
- for(i=n;i>0;i--){//从n到1,m计数这个整数的末尾值,然后取余存到s数组
- m=m+i*a;//这里最为关键,读者可以自行举例代入计算,就会发现其规律
-
- //谈个闲话,基础的许多代码都可通过模拟其过程实现,也有很多代码包含数学思维,利用数学归纳其规律,通过代码实现
- s[i]=m%10;
- m=m/10;
- }
- if(m!=0) cout<<m;若首位不为0,输出首位
- for(i=1;i<=n;i++)1到n进行输出
- cout<<s[i];
- }
- return 0;
- }