高精度算法

是一共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("\n");
    return 0;
}

 

原文链接: https://www.cnblogs.com/ypw1131115630/p/13021402.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    高精度算法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/352045

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午7:18
下一篇 2023年3月2日 上午7:19

相关推荐