高精度

对于非常庞大的数字通常无法在计算机中正常存储,于是,就需要将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中,再进行计算,这就是高精度算法

存储:

void init(int a[ ])

{

string s;

cin>>s;//输入

a[0]=s.length();//计算s位数·

for(int i=1;i<=a[0];i++)

a[i]s[a[0]-i]-'0';//存储

}

进位借位:

1、加法

c[i]=a[i]+b[i];//相加

if(c[i]>=10)

{

c[i]%10=10;

++c[i+1];

}//进位

2、减法

if(a[i]<b[i])
{
 --a[i+1];
 a[i]+=10;
}//借位
c[i]=a[i]-b[i];//相减

3、乘法

c[i+j-1]=a[i]*b[i]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;

4、商与余数

视情况而定。。。

posted @ 2020-05-09 16:55  ZiChi  阅读(89)  评论(0)    收藏  举报