记录编号 | 444916 | 评测结果 | AAAAAA | ||
---|---|---|---|---|---|
题目名称 | 增强的减法问题 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.001 s | ||
提交时间 | 2017-09-04 17:38:07 | 内存使用 | 0.31 MiB | ||
#include<bits/stdc++.h> using namespace std; struct bigint{ int num[105],l; char a[105]; bigint(){ l=0; memset(num,0,sizeof(num)); memset(a,0,sizeof(a)); } void read(){ scanf("%s",a); l=strlen(a); for(int i=1;i<=l;i++) num[i]=a[l-i]-'0'; } bool operator < (const bigint &b)const { if(l!=b.l)return l<b.l; for(int i=l;i>=1;i--){ if(num[i]==b.num[i])continue; return num[i]<b.num[i]; } } void out(){ int o=0,book=0,L=l,flag=0; while(L){ if(num[L]!=0)book=1; if(book){ if(num[L]<0)flag=1,num[L]*=-1; a[o++]=num[L]+'0'; } L--; } if(flag)cout<<"-"; if(o) cout<<a; else cout<<0; } }; bigint operator - ( bigint &a, bigint &b){ bigint c; int flag=0; if(a<b)swap(a,b),flag=1; c.l=a.l; for(int i=1;i<=c.l;i++){ c.num[i]=a.num[i]-b.num[i]; if(c.num[i]<0&&i!=c.l){ c.num[i]+=10; a.num[(i+1)]--; } } if(flag){ int L=c.l; while(!c.num[L]){ L--; } c.num[L]*=-1; } return c; } int main() { freopen("sub.in","r",stdin); freopen("sub.out","w",stdout); // freopen("1.txt","r",stdin); bigint a,b,c; a.read(); b.read(); c=a-b; c.out(); return 0; }