|
高精度减法常规,用时1h,不好,--顺手写成了++
- #include<iostream>
- using namespace std;
- string n,n1,n2;
- int a[10010],b[10010],c[10010],la,lb,lc,i;
- int bj(string x,string y)
- {
- for(i=0;i<=la;i++)
- {
- if(x[i]>y[i]) return 0;
- if(x[i]<y[i]) return 1;
- }
- return 0;
- }
- int main()
- {
- cin>>n1>>n2;
- la=n1.size();lb=n2.size();
- if(la<lb)
- {swap(n1,n2);swap(la,lb);cout<<'-';}
- else if(la==lb&&bj(n1,n2))
- {swap(n1,n2);swap(la,lb);cout<<'-';}
- if(la>lb) for(i=lb;i<la;i++) n2=n2+'0';
- for(i=0;i<=la-1;i++) a[la-i]=n1[i]-'0';
- for(i=0;i<=lb-1;i++) b[lb-i]=n2[i]-'0';
- i=1;while(i<=la)
- {
- if(a[i]<b[i]){a[i]+=10;a[i+1]--;}
- c[i]=a[i]-b[i];i++;
- }
- lc=i;
- while(c[lc]==0&&lc>1) lc--;
- for(i=lc;i>=1;i--) cout<<c[i];
- return 0;
- }
复制代码 |
|