题目描述
Description
给出两个正整数A和B,计算A-B的值。保证A和B的位数不超过500位。
输入描述
Input Description
读入两个用空格隔开的正整数
输出描述
Output Description
输出A-B的值
样例输入
Sample Input
3 12
样例输出
Sample Output
-9
数据范围及提示
Data Size & Hint
两个正整数的位数不超过500位
#include<iostream> #include<string.h> #include<algorithm> using namespace std; int main() { char a[510],b[510]; int la,lb,l; int fa[510]={0},fb[510]={0}; cin>>a>>b; la=strlen(a); lb=strlen(b); l=max(la,lb); for(int i=0;i<la;i++) { fa[la-i]=int(a[i])-'0'; } for(int i=0;i<lb;i++) { fb[lb-i]=int(b[i])-'0'; } int k,t=0; for(int i=l;i>=1;i--) { if(fb[i]>fa[i]){k=1;break;} if(fb[i]<fa[i]){k=0;break;} if(fb[i]==0){continue;} } if(k==0) { for(int i=1;i<l;i++) { fa[i]=fa[i]-fb[i]-t; t=0; if(fa[i]<0){t=1;fa[i]=fa[i]+10;} } fa[l]=fa[l]-fb[l]-t; for(int i=l;i>0;i--) { cout<<fa[i]; } } else { for(int i=1;i<l;i++) { fa[i]=fb[i]-fa[i]-t; t=0; if(fa[i]<0){t=1;fa[i]=fa[i]+10;} } fa[l]=fb[l]-fa[l]-t; cout<<'-'; bool pd=true; for(int i=l;i>0;i--) { if(fa[i]==0&&pd){continue;} cout<<fa[i]; pd=false; } } return 0; }