给定某数字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
刚开始做的时候没考虑到这个数非常大,直接用整形变量写得,结果不对,又看了看题发现最后结果可能比长整型都大,搜了下大家的代码,发现可以用数组来写,思路来源放在代码里了。
代码如下:
#include<stdio.h>//思路来源:https://blog.csdn.net/weixin_43691984/article/details/120255511//
int main()
{
int a,n;
int i,j,m;
int temp,flag;
int s[100001];
scanf("%d %d",&a,&n);
j=n;
temp=0;
flag=0;
if(a==1&&n==0)
{
printf("0");
}
else
{
for(i=0;i<n;i++)
{
m=j*a+temp;
s[i]=(m)%10;
if((m)>=10)
{
temp=m/10;
}
else
{
temp=0;
}
j--;
}
if(temp!=0)
{
s[n]=1;
flag=1;
}
if(flag==1)
{
for(i=n;i>=0;i--)
{
printf("%d",s[i]);
}
}
else
{
for(i=n-1;i>=0;i--)
{
printf("%d",s[i]);
}
}
}
return 0;
}