下载了第一个测试点数据为 in: 30141 8160 out: 21981 我代码本地测试结果与之完全相同,且自行构造数据也全对,但是只能得10分qwq求大佬指点
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> a,b;
int ct=0;
while(ct!=2){
char c;
c = getchar();
if(c=='\n'){
ct++;
continue;
}
if(ct==0){
a.push_back(c-'0');
}else{
b.push_back(c-'0');
}
}
vector<int> ans;
//假设a,b都是正整数
while(a.size()<b.size()){
a.insert(a.begin(),0);
}
while(a.size()>b.size()){
b.insert(b.begin(),0);
}
int borr=0;
auto ita = a.rbegin();
auto itb = b.rbegin();
while(ita!=a.rend()){
int x = *ita;
int y = *itb;
int calc = x-y-borr;
if(calc<0){
borr=1;
calc = calc+10;
}else{
borr=0;
}
ans.push_back(calc);
ita++;
itb++;
}
if(borr==1){
borr=0;
vector<int> Big;
vector<int> newAns;
for(int i=0; i<ans.size(); i++){
Big.push_back(0);
}
Big.push_back(1);
ans.push_back(0);
auto itx = ans.begin();
auto ity = Big.begin();
while(itx!=ans.end()){
int x = *itx;
int y = *ity;
int calc = y-x-borr;
if(calc<0){
borr=1;
calc = calc+10;
}else{
borr=0;
}
newAns.push_back(calc);
itx++;
ity++;
}
string relt="-";
int fir=1;
for(auto it=newAns.rbegin(); it!=newAns.rend(); it++){
if(*it == 0 && fir==1)
continue;
relt += *it+'0';
fir=0;
}
cout<<relt;
}else{
string relt="";
int fir=1;
for(auto it=ans.rbegin(); it!=ans.rend(); it++){
if(*it == 0 && fir==1)
continue;
relt += *it+'0';
fir=0;
}
cout<<relt;
if(fir==1)
cout<<0;
}
return 0;
}