题解:UVA10523 Very Easy !!!

· · 题解

思路:

额,看上去是一个很难的题目,实际上就是一个高精题目

Python

python 直接计算,自带高精度。

for i in range(1, n + 1):
    sum+=i*(a ** i)

C++

高精其实就是被模板就可以了。

for(int i=1;i<=m;i++){//枚举每个次方
    for(int k=1;k<=i;k++){
        for(int j=1;j<=a[0];j++) a[j]*=n;//计算a的i次方
        for(int j=1;j<=a[0];j++){
            if(a[j]>=10){//判定进位
                a[j+1]+=a[j]/10;
                a[j]%=10;
                if(j==a[0])  a[0]++;//最高位进位
            }
        }  
    }
    for(int i=1;i<=a[0];i++) a[j]*=i;//单独处理乘i
    for(int i=1;i<=a[0];i++){
       if(a[i]>=10){
          a[i+1]+=a[i]/10;
          a[i]%=10;
          if(i==a[0]) a[0]++;
       }
     }
}
while(a[0]>1&&a[a[0]]==0) a[0]--;//前导零
for(int i=a[0];i>=1;i--) cout<<a[i];//逆序