codevs3115 高精度减法

来源:互联网 发布:广东淘宝服装生产商 编辑:程序博客网 时间:2024/06/05 16:47

论 -‘0’ 的重要性

#include<bits/stdc++.h>using namespace std;template <typename T> void read(T &x){x=0;int f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';x*=f;}struct node{int n[501];int depth;}num[2];int main(){string a,b;cin>>a>>b;if(a.length()>b.length()){num[0].depth=a.length();for(int i=0;i<a.length();++i) num[0].n[a.length()-i]=a[i]-'0';num[1].depth=b.length();for(int i=0;i<b.length();++i) num[1].n[b.length()-i]=b[i]-'0';}else{if(b.length()>a.length()){cout<<"-";num[0].depth=b.length();for(int i=0;i<b.length();++i) num[0].n[b.length()-i]=b[i]-'0';num[1].depth=a.length();for(int i=0;i<a.length();++i) num[1].n[a.length()-i]=a[i]-'0';}else{if(a>b){num[0].depth=a.length();for(int i=0;i<a.length();++i) num[0].n[a.length()-i]=a[i]-'0';num[1].depth=b.length();for(int i=0;i<b.length();++i) num[1].n[b.length()-i]=b[i]-'0';}else{cout<<"-";num[0].depth=b.length();for(int i=0;i<b.length();++i) num[0].n[b.length()-i]=b[i]-'0';num[1].depth=a.length();for(int i=0;i<a.length();++i) num[1].n[a.length()-i]=a[i]-'0';}}}/*cout<<num[0].depth<<" "<<num[1].depth<<endl;for(int i=1;i<=num[0].depth;++i) cout<<num[0].n[i];cout<<endl;for(int i=1;i<=num[1].depth;++i) cout<<num[1].n[i];cout<<endl; */int c[501];memset(c,0,sizeof(c));for(int i=1;i<=num[0].depth;++i){c[i]+=num[0].n[i]-num[1].n[i];if(c[i]<0){c[i]+=10;c[i+1]--;}}int len;for(int i=num[0].depth;i>=1;--i){if(c[i]==0) continue;else{len=i;break;} }/*for(int i=num[0].depth;i>=1;--i) cout<<c[i];cout<<endl;cout<<len<<endl;*/for(int i=len;i>=1;--i)cout<<c[i];cout<<endl; return 0;}


原创粉丝点击