大整数减法
2018-01-13 16:02
176 查看
#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <math.h> #include <ctype.h> #include <map> #include <set> #include <vector> #include <queue> #define inf 0x3f3f3f3f #define eps 1e-8 #define pi 3.1415 typedef long long ll; using namespace std; int x[300],y[300]; int main() { string a,b; cin>>a>>b;//读入两个大整数,保证a>b reverse(a.begin(),a.end());//反转a,b便于计算 reverse(b.begin(),b.end()); int n1=a.size(); int n2=b.size(); for(int i=0; i<n1; i++) x[i]=a[i]-'0';//存储为int数组便于书写 for(int i=0; i<n2; i++) y[i]=b[i]-'0'; for(int i=0; i<n1; i++)//模拟竖式减法 { x[i]-=y[i]; if(x[i]<0) { x[i]+=10; x[i+1]--; } } for(int i=n1-1; i>=0; i--) { if(x[i]!=0||i==0)//从第一位不是0的数字开始,i==0保证输入两个0时也有结果 { for(int j=i; j>=0; j--) { printf("%d",x[j]); } break; } } printf("\n"); return 0; }