高精度算法之累加

Description

用高精度方法,求s=1+2+3+……+n的精确值(n以一般整数输入)。

Input

一行一个整数n(<1000000)

Output

输出1到n的累加和,一组数据占一行

Sample Input

10

Sample Output

55

思路:两个大数字相加,用一个数组来存放它们每一位的和,然后考虑进位,这个题稍微变了一下,就是用一个循环,就是每加一个数字,先从最低位开始然后一位一位的去进位.

代码如下:

#include<iostream>
using namespace std;
#define MAX_LENGTH 1000
int a[MAX_LENGTH];

int main(){
    int n;
    cin>>n;
    int digit=1,x;
    for(int i=1;i<=n;i++){
        x=0;
        for(int j=0;j<digit;j++){
            if(j==0){
                a[j]=a[j]+i+x;
                x=a[j]/10;
                a[j]=a[j]%10;
            }
            else{
                a[j]=a[j]+x;
                x=a[j]/10;
                a[j]=a[j]%10;
            }
         }
            if(x>0)
                a[digit++]=x;

    }

    for(int i=digit-1;i>=0;i--)
      cout<<a[i];
}
发布了69 篇原创文章 · 获赞 50 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq873044564/article/details/88932144