低位在下标为0的数组那,代码都是用了繁凡的ACM模板。
加法
c = a+b
g||i<a.len||i<b.len 这个设定是直的好,再也不用担心两个数组的长度了,也不用担心c的数组长度。
{
int c[N];
clen = 0;
for(int i=0,g=0; g||i<a.len||i<b.len ; i++)
{
int x=g;
if(i<a.len) x+=a[i];
if(i<b.len) x+=s[i];
c[clen++] = x%10;
g=x/10;
}
return c;
}
减法
c = a-b
{
int c[N];
int clen=0;
int x;
for (int i=0,g=0;i<alen ; i++)
{
x=a[i]-g;
if (i<b.len) x-=b[i];
if (x>=0) g=0;
else{
x+=10;
g=1;
}
c[clen++]=x;
}
while (clen>1 && !s[len-1]) len--;
return c;
}
乘法
c = a*b文章来源:https://www.toymoban.com/news/detail-796609.html
{
int c[N];
int clen = alen+blen;
for(int i=0;i<alen;i++)
{
for(int j=0;j<blen;j++)
{
c[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<clen-1;i++)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
while(clen >1 && !c[clen-1]) clen--;
return c;
}
两个数进行比较
先比长度,长度相同,从高位到低位进行比较。文章来源地址https://www.toymoban.com/news/detail-796609.html
到了这里,关于[ACM 学习] 高精度计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!