问题标题: 酷町堂:高精度减法怎么写?

0
0

0
已采纳
许梦琪
许梦琪
新手守护
新手守护

把高精度加法代码改一下(for部分)
 

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

     if(a[i]<b[i]){ 

        a[i]+=10; 

        a[i+1]--;

     } 

    c[i]=a[i]-b[i]; 

} 

while(c[c[0]]==0&&c[0]>1) c[0]--;

 

0
0
0
刘风翔
刘风翔
新手启示者
新手启示者

我要豆子和经验!!!

0
陈正朔
陈正朔
初级光能
初级光能

和高加差不多

将x,y相减

a[0]=x.length(),b[0]=y.length();
    c[0]=max(a[0],b[0]);
    for(int i=1;i<=a[0];i++){
        a[i]=x[a[0]-i]-'0';
    }
    for(int i=1;i<=b[0];i++){
        b[i]=y[b[0]-i]-'0';
    }
    for(int i=1;i<=c[0];i++){
        if(a[i]<b[i]){
            a[i+1]--;
            a[i]+=10;
        }
        c[i]=a[i]-b[i];
    }
    while(c[c[0]]==0) c[0]--;
    for(int i=c[0];i>=1;i--) cout<<c[i];

 

0
汪宇航
汪宇航
新手启示者
新手启示者

const int MAXN=100005;

int A[MAXN],B[MAXN],C[MAXN],ANS[MAXN],LEN_A,LEN_B,LEN_ANS;

void Read(int *A,int &LEN){

string cur;

cin>>cur;

LEN=cur.length();

for(int i=0;i<LEN;i++){

A[i]=cur[i]-48;

}

reverse(A,A+LEN);

}

int main(){

Read(A,LEN_A);

Read(B,LEN_B);

LEN_ANS=max(LEN_A,LEN_B);

for(int i=0;i<=LEN_ANS;i++){

ANS[i]=A[i]-B[i]-C[i]; if(ANS[i]<0){

C[i+1]++,ANS[i]+=10;

}

}

while(ANS[LEN_ANS]>1&&ANS[LEN_ANS-1]==0){

LEN_ANS--;

}

for(int i=LEN_ANS-1;i>=0;i--){

cout<<ANS[i];

}

return 0;

}

我要回答