60分

P2142 高精度减法

前导0
by PuJunXi @ 2024-02-24 21:21:47


加一句 `while(c[lena]==0&&lena>1) --lena;`
by PuJunXi @ 2024-02-24 21:22:54


@[feizhukkksc03](/user/971024)
by PuJunXi @ 2024-02-24 21:24:40


```cpp #include<bits/stdc++.h> using namespace std; int jj1[100005],jj2[100005],c[100005]; string a,b; int main() { cin>>a>>b; int lena=a.size(),lenb=b.size(); if(lena<lenb||(lena==lenb&&a<b)) swap(a,b),cout<<"-"; for(int i=0;i<lena;i++) jj1[i]=a[lena-1-i]-'0'; for(int i=0;i<lenb;i++) jj2[i]=b[lenb-1-i]-'0'; for(int i=0;i<lena;i++) { if(jj1[i]<jj2[i]) { jj1[i]+=10; jj1[i+1]--; } c[i]=jj1[i]-jj2[i]; } while(c[lena]==0&&lena>1) --lena; for(int i=lena;i>=1;i--) cout<<c[i]; return 0; } ``` 还是错的@[PuJunXi](/user/1011579)
by 违规用户名971024 @ 2024-02-24 21:26:03


调不出来,先看看我的吧。 补作业去了。 抱歉。 ```cpp #include<iostream> const int SIZE=1e5+5; int a[SIZE],b[SIZE],c[SIZE]; std::string c1,c2; inline void init(),sub(),print(); signed main(){ init(); sub(); print(); } inline void init(){ std::cin>>c1>>c2; if(c1.size()<c2.size()||(c1.size()==c2.size()&&c1<c2)){ std::string tmp; tmp=c1; c1=c2; c2=tmp; printf("-"); } *a=c1.size(),*b=c2.size(),*c=1; for(int i=1;i<=*a;++i) a[i]=c1[*a-i]-'0'; for(int i=1;i<=*b;++i) b[i]=c2[*b-i]-'0'; } inline void sub(){ while(*c<=*a||*c<=*b){ if(a[*c]<b[*c]){ a[*c]+=10; --a[*c+1]; } c[*c]=a[*c]-b[*c]; ++(*c); } while(c[*c]==0&&*c>1) --(*c); } inline void print(){ for(int i=*c;i;--i) printf("%d",c[i]); } ``` @[feizhukkksc03](/user/971024)
by PuJunXi @ 2024-02-24 21:40:45


|