如求和后每一位都有相同的计算规律,可将每一位存至数组,一般采用逆序存入,从最后一位开始,说到这,我想到输入较大数据也可以用字符数组,char定义数组后gets输入,这样好处是可以根据需要立马提出那一位数字。以下是数列求和加强版的一个题,注意进位的不同。
给定某数字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。
#include<stdio.h>
int i,a,n,m,w[100099],s=0,p=1;
int main()
{
scanf("%d %d",&a,&n);
if(n==0)
printf("0");
else
{
for(i=n;i>=1;i--)//从最后一位开始存
{
w[i]=(a*i+s)%10;
s=(a*i+s)/10;
if(s&&i==1)//当s和i都为1时,判断是否进了位,进了则为n+1位
{
w[0]=s;
p=0;
}
}
}
for(i=p;i<n+1;i++)
{
printf("%d",w[i]);
}
return 0;
}