高精度算法
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; }
以上是关于高精度算法的主要内容,如果未能解决你的问题,请参考以下文章
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]