1269 - 高精度减法
题目描述
高精度减法,求 a−ba−b。a,ba,b 都是不超过 240240 位的非负整数。
输入
两个非负整数,每行一个。
输出
一个整数,代表两个整数相减之后的结果。
样例
输入
复制
33333333333333333333333333333333333333333 22222222222222222222222222222222222222222
输出
复制
11111111111111111111111111111111111111111
来源
高精度算法
代码:
#include <bits/stdc++.h>
#include<string> #include<algorithm>
using namespace std;
int main(){
int i,l,l1,a[32767]={},b[32767]={},c[32767],d,flag,t=0;
string s,s1,s2,result;
cin>>s>>s1;
if(s==s1){
cout<<"0";
}
if(s1.size()==s.size()){
if(s<s1){
cout<<"-";
s2=s;
s=s1;
s1=s2;
}
}
else{
if(s.size()<s1.size()){
cout<<"-";
s2=s;
s=s1;
s1=s2;
}
}
l=s.size();
l1=s1.size();
d=max(l,l1);
for(i=0;i<=l-1;i++){
a[i]=s[l-1-i]-'0';
}
for(i=0;i<=l1-1;i++){
b[i]=s1[l1-1-i]-'0';
}
for(i=0;i<=d-1;i++){
if(a[i]-b[i]>=0){
c[i]=a[i]-b[i];
}
else{ a[i+1]--;
c[i]=a[i]-b[i]+10;
}
}
int res = d-1;
for(i=res;i>=0;i--){
if(c[i]==0) d--;
else break;
}
for(i=d-1;i>=0;i--){
result += char(c[i]+'0');
}
cout<<result;
}
1404

被折叠的 条评论
为什么被折叠?



