高精度算法

2020-12-30 05:28

阅读:684

标签:long   code   span   col   scan   namespace   数据   flag   style   

是一共n个数据,请计算这n个数据的和(高位数,可以超过long long)

#include 
#include 
using namespace std;
const long long  maxn=1e8+1;
int  a[maxn],b[maxn],v[maxn];
int mid,flag;
char s[maxn],x[maxn];
int main()
{
    int n,i,j,t,lx,ls,l=0;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",x);
        lx=strlen(x);
        memset(b,0,sizeof(b));
        for (i=0; i)
        {
            b[i]=x[lx-1-i]-0;
        }
        l=max(lx,l);//取x和之前求和后的数组的最大长度
        for (i=0; i)
        {
            a[i]+=b[i];//每个位数的数字相加
        }
    }

    for (i=0; i)
    {
        if (a[i]>=10)//如果这个位数的数字超过了10,就mod 10 ,向前面进位
            a[i+1]+=a[i]/10;
        a[i]%=10;
    }
    while(a[l])//如果最高位进位了,那就让l的长度往上加
    {
        a[l+1]=a[l]/10;
        a[l]%=10;
        l++;
    }
    for (i=l-1; i>=0; i--)//由于数组从0开始,注意从循环从l-1开始
    {
        printf("%d",a[i]);
    }
    printf("\n");
    return 0;
}

 

高精度算法

标签:long   code   span   col   scan   namespace   数据   flag   style   

原文地址:https://www.cnblogs.com/ypw1131115630/p/13021402.html


评论


亲,登录后才可以留言!