高精度算法

Posted ypw1131115630

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度算法相关的知识,希望对你有一定的参考价值。

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

#include <bits/stdc++.h>
#include <algorithm>
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<lx; i++)
        {
            b[i]=x[lx-1-i]-0;
        }
        l=max(lx,l);//取x和之前求和后的数组的最大长度
        for (i=0; i<l; i++)
        {
            a[i]+=b[i];//每个位数的数字相加
        }
    }

    for (i=0; i<l; 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("
");
    return 0;
}

 

以上是关于高精度算法的主要内容,如果未能解决你的问题,请参考以下文章

1049 数列的片段和(注意精度!!)

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

算法基础| 高精度算法详解

算法AcWing 791. 高精度加法