高精度VS低精度
2025-11-22 18:03:26
发布于:香港
0阅读
0回复
0点赞
//高精度
#include<bits/stdc++.h>
#define int long long //int->long long
using namespace std;
bool hf(const string &a,const string &b){
if(a.size()!=b.size())return a.size()<b.size();
for(int i=0;i<a.size();i++){
if(a[i]!=b[i])return a[i]<b[i];
}
return true;
}
signed main(){//int被变成long long,替换方案
string a,b;
cin>>a>>b;
string x="",y="";
for(int i=a.size()-1;i>=0;i--)x+=a[i];
for(int i=b.size()-1;i>=0;i--)y+=b[i];
int len,k=0,e=1;
if(x.size()>y.size()){
len=x.size();
while(y.size()<x.size())y+="0";
}else if(y.size()>x.size()){
len=y.size();
while(x.size()<y.size())x+="0";
e=-1;
}else{
len=x.size();
if(hf(a,b))e=-1;
}
if(e==-1)swap(x,y);//#include<algorithm>
vector<char>c;//#include<vector>
for(int i=0;i<len;i++){
int diff=(x[i]-'0')-(y[i]-'0')-k;
if(diff<0){
c.push_back(diff+10+'0');
k=1;
}else{
c.push_back(diff+'0');
k=0;
}
}
while(c.size()>1&&c.at(c.size()-1)=='0')c.pop_back();
if(e==-1)c.push_back('-');
for(int i=c.size()-1;i>=0;i--)cout<<c[i];
return 0;
}
//低精度
#include<iostream>
using namespace std;
int main(){
short a,b;//约32000
cin>>a>>b;
cout<<a-b;
return 0;
}
这里空空如也


有帮助,赞一个