问题标题: 酷町堂:高精算法(加减乘除)

0
0

1
已采纳
夏义博
夏义博
初级守护
初级守护

高精加

整形 x[100001],y[100001],z[100001],jw;    //定义
string a,b;
int main(){
    cin>>a>>b;
    x[0]=a.size();
    y[0]=b.size();
    z[0]=max(x[0],y[0]);
    for(int i=0;i<=x[0]-1;i++){
        x[x[0]-i]=a[i]-'0';
    }
    for(int i=0;i<=y[0]-1;i++){
        y[y[0]-i]=b[i]-'0';
    } 
    for(int i=1;i<=z[0];i++){
        z[i]=x[i]+y[i]+jw;
        jw=z[i]/10;
        z[i]=z[i]%10;
    }
    if(jw){
        z[0]++;
        z[z[0]]=jw;
    }
    for(int i=z[0];i>=1;i--){
        cout<<z[i];
    }
    return 0;
}

高精减

int main()
{
    定义 a[2000],b[2000],c[2000],lena,lenb,lenc,i;
    char n[2000],n1[2000],n2[2000];
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    gets(n1);  
    gets(n2);   
    如果 (strlen(n1)<strlen(n2)||(strlen(n1)==strlen(n2)&&strcmp(n1,n2)<0))  
    {     
        strcpy(n,n1);    
        strcpy(n1,n2);
        strcpy(n2,n);
        cout<<"-";   
    }
    lena=strlen(n1);lenb=strlen(n2);
    for (i=0;i<=lena-1;i++) a[lena-i]=n1[i]-'0'; 
    for (i=0;i<=lenb-1;i++) b[lenb-i]=n2[i]-'0';  
    i=1;
    while (i<=lena)
    {
        if (a[i]<b[i])
        {
            a[i]+=10;  
            a[i+1]--; 
        }
        c[i]=a[i]-b[i];
        i++;
    }
    lenc=i;
    for (i=lenc;i>=1;i--)
        if ((c[i]==0)&&(lenc>1)) lenc--;else break;  
    for (i=lenc;i>=1;i--) cout<<c[i];
    cout<<endl;
    return 0;
}

本蒟蒻只会加和减

望采纳

1
屈子元
屈子元
初级守护
初级守护

提示一下,高精度的加减可以直接在字符串上操作,高精度加法,减法:

s[i]=a[i]+b[i]-'0';

if(s[i]>'9')

{

s[i]-=10;

s[i-1]++;

}

s[i]=a[i]-b[i]+'0';

 

if(s[i]<'0')

{

s[i]+=10;

s[i-1]--;

}

乘法也可以直接位操作,比如a[i]和b[j]直接位相乘,可以:

c[i+j]=(a[i]-'0')*(b[i]-'0')+'0';

最后进位操作

除法不常用也比较难,可以先不了解

上面的已经举报

 

上面的已举报

0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

《信息学竞赛一本通》上有,就是高精度类的。

node:

void Plus()
{
    w[0]=max(c[0],d[0]);
    int jw=0,h;
    for(int i=1;i<=w[0];i++)
    {
        h=jw+c[i]+d[i];
        w[i]=h%10;
        jw=h/10;
    }
    if(jw!=0)
    {
        w[0]++;
        w[w[0]]=jw;
    }
}

传统的高精度加法

至于减法...等你悬赏20豆再说...

0
李致远
李致远
高级光能
高级光能

高精度的加减可以直接在字符串上操作!

0
0
侯平仄
侯平仄
新手天翼
新手天翼

重声一下,我不是在刷分

我要回答