高精度减法(大整数减法)c++

    科技2025-10-25  11

    思路: 先输入a和b。判断它们两个数的大小,如果减数比被减数大,那么说明差是一个负数,可以直接输出负号,然后将它们两个数交换,方便计算。

    #include<bits/stdc++.h> using namespace std; char a[10000],b[10000],jh[10000]; int alen,blen,clen,sa[10000],sb[10000],temp[10000],x; int main() { cin>>a>>b;//输入a和b alen=strlen(a);//a的长度 blen=strlen(b);//b的长度 if(blen>alen||(alen==blen&&strcmp(a,b)<0))//如果b比a大,那么说明这是一个负数,输出一个负号,然后将他们两个数字交换。 { cout<<"-"; strcpy(jh,a); strcpy(a,b); strcpy(b,jh); } alen=strlen(a);//交换后的长度 blen=strlen(b); for(int i=0;i<alen;i++)//转数字 sa[alen-i-1]=a[i]-48; for(int i=0;i<blen;i++)//转数字 sb[blen-i-1]=b[i]-48; while(clen<alen||clen<blen)//相减 { if(sa[clen]<sb[clen]) { sa[clen+1]--; sa[clen]+=10; } temp[clen]=sa[clen]-sb[clen]; clen++; } while(temp[clen]==0)//去除末尾的0 clen--; for(int i=clen;i>=0;i--)//输出 cout<<temp[i]; return 0; }
    Processed: 0.009, SQL: 8