19 条题解
-
0
#include <bits/stdc++.h> using namespace std; string s1,s2; int len1,len2,sum,carry=0,a[40]={0},b[40]={0},c[40]={0}; char q; bool f; int main() { cin>>s1>>s2>>q; if(q=='+') { int len1=s1.size(); int len2=s2.size(); for(int i=0;i<len1;i++) a[i]=s1[len1-i-1]-'0'; for(int i=0;i<len2;i++) b[i]=s2[len2-i-1]-'0'; int maxlen=max(len1,len2); for(int i=0;i<=maxlen;i++) { sum=a[i]+b[i]+carry; c[i]=sum%10; carry=sum/10; } if(c[maxlen]==0) { for(int i=maxlen-1;i>=0;i--) { cout<<c[i]; } } else { for(int i=maxlen;i>=0;i--) { cout<<c[i]; } } } if(q=='-') { int len1=s1.size(); int len2=s2.size(); f=true; if(len1<len2||(len1==len2)&&(s1<s2)) { f=false; swap(s1,s2); swap(len1,len2); } for(int i=0;i<len1;i++) a[i]=s1[len1-i-1]-'0'; for(int i=0;i<len2;i++) b[i]=s2[len2-i-1]-'0'; for(int i=0;i<len1;i++) { if(a[i]<b[i]) { a[i+1]=a[i+1]-1; a[i]=a[i]+10; c[i]=a[i]-b[i]; } else c[i]=a[i]-b[i]; } int k=len1; while(c[k]==0&&k>0) k--; if(f==false) cout<<"-"; for(int i=k;i>=0;i--) cout<<c[i]; } return 0; }
信息
- ID
- 101
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 103
- 已通过
- 21
- 上传者