大数a+aa+aaa+…(多实例)
题目描述
有这样一个数列
2,22,222,2222,22222,…
很明显, 该数列的每一项都比其前一项多一位数字
所以,通用的来说, 如果这个数列的首项为a(1≤a≤9),那么他的前n项和为多少呢,注意,n的取值范围为1≤n≤1000
输入
第一行为一个整数T,表示有T组数据
接下来T行, 每行有两个整数首项a , (1≤a≤9) 以及项数n , 1≤n≤1000
输出
对于输入的每一个a和n,输出其对应的前n项和S
样例输入
2
2 5
3 10
样例输出
24690
3703703700
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,j,a,b,ans[1005];
scanf("%d",&n);
while(n--)
{
memset(ans,0,sizeof(ans));
scanf("%d%d",&a,&b);
j=0;
for(i=1;i<=b;i++)
{lu
ans[i]=a*(b-j)+ans[i];//主要是运用到了乘法分配。最好试一下,就可以明白了
ans[i+1]=ans[i]/10;//超9进位
ans[i]=ans[i]%10;
j++;
}
b+=100;
int f=0;
for(b;b>0;b--)
{
if(ans[b]!=0)
f=1;
if(f==1)
printf("%d",ans[b]);
}
printf("\n");
}
return 0;
}