数组应用——高精度运算的实验范例

    xiaoxiao2025-03-01  16

    1.高精度数的表示

    用一个数组表示一个高精度数:将数字按十进制位分离,每位十进制数依次存储到一个数组中

    int a[100]={0}; int n; string s; cin>>s; n=s.length(); for(i=0;i<n;i++) a[i]=s[n-i-1]-'0';//数组a从右到左按位存储 2.

    (1)高精度数加和减

    n1为x的位数,n2为y的位数

    for(i=0;i<(n1>n2?n1:n2);i++) a[i]=a[i]+b[i]; if(a[i]>9) { a[i]=a[i]-10; a[i+1]++; }n为x的位数。若想x<y,数组a和b互换,相减后的差取负

    for(i=0;i<n;i++) { if(a[i]>b[i]) a[i]=a[i]-b[i]; else { a[i]=a[i]+10-b[i]; a[i+1]--; } } (2)高精度数的乘和除

    首先要确定积的位数,设两个高精度正整数a和b,La和Lb为其位数。a和b乘积的位数至少为La+Lb-1,若有进位则位数为La+Lb。及位数上限为La+Lb;

    for(i=0;i<La-1;i++) for(j=0;j<Lb-1;j++) c[i+j]+=a[i]*b[j]; for(i=0;i<La+Lb;i++) if(c[i]>=10) { c[i+j]+=c[i]/10; c[i]%=10; }

    转载请注明原文地址: https://ju.6miu.com/read-1296755.html
    最新回复(0)