大数a+aa+aaa+......(多实例)

大数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;
}

猜你喜欢

转载自blog.csdn.net/cuijunrongaa/article/details/103555584