九度1051

给定a和n,计算a+aa+aaa+a...a(n个a)的和。

因为是大数加法,所以需要用到数组。我的算法是利用堆栈的思想,将低位到高位依次入栈,输出时再出栈即可,其中需要用到一个变量t计算进位。

我惊喜地发现论坛上有位大神的算法和我的是一样的,但我一开始没有考虑到a为0的时候,惭愧惭愧……

废话不多说了,下面贴代码:

#include<stdio.h>

int main()
{
    int a,n;
    while(scanf("%d%d",&a,&n)!=EOF)
    {
        int i,t=0,sum[110],flag=0;
        for(i=0;i<n;i++)
        {
            sum[i]=((n-i)*a+t)%10;
            t=((n-i)*a+t)/10;
        }
        sum[n]=t;
        for(i=0;i<=n;i++)
            if(sum[i]!=0) flag=1;
        if(flag==0) printf("0");
        else 
        {
            if(sum[n]!=0) printf("%d",sum[n]);
            for(i=n-1;i>=0;i--) 
                printf("%d",sum[i]);
        }
        printf("\n");
    }
    return 0;
}