想看转圈圈的看这个测评记录 555怎么办我不小心卡了测评机QAQ 代码在这
#include<iostream>
#include<algorithm>
#include<cmath>
using std::string;
string num1,num2,ans="";
bool comparasion(std::string a,std::string b){//a>=b true ; a<b false hint:no bug
int size_sub = abs(a.size()-b.size());
if(a.size()>b.size()) for(int i=0;i<size_sub;i++) b+="0";
else if(a.size()<b.size()) for(int i=0;i<size_sub;i++) a+="0";
for(int i=a.size()-1;i>=0;i--){
if((a[i]-'0')==b[i]-'0') continue;
else return (a[i]-'0')>=(b[i]-'0');
}
return true;
}
string super_large_substract(string a,string b){//already up side down hint:no bug
short int mid = 0;
short int far_mid = 0;
for(int i=0;i<b.size();i++){
mid = (a[i]-'0')-(b[i]-'0');
if(mid<0){
int flag = 0;
do{
flag++;
far_mid = (a[i+flag]-'0');
}while(a[i+flag]=='0');
a[i+flag] = (a[i+flag]-'0'-1)+'0';
for(int j=1;j<flag;j++) a[i+j]='9';
mid+=10;
}
a[i] = mid+'0';
}
return a;
}
int main(){//end is the highest
std::cin>>num1>>num2;
for(int i=0;i<num1.size()/2;i++) std::swap(num1[i],num1[num1.size()-i-1]);
for(int i=0;i<num2.size()/2;i++) std::swap(num2[i],num2[num2.size()-i-1]);
for(int i=0;i<num1.size();i++) ans+="0";
string mid;
for(int i=num1.size()-num2.size();i>=0;i--){
mid = "";
for(int j=0;j<i;j++) mid+="0";
while(comparasion(num1,mid+num2)){
num1 = super_large_substract(num1,mid+num2);
ans[i] = (ans[i]-'0'+1)+'0';
}
}
bool flag = true;
for(int i=ans.size()-1;i>=0;i--){
if(flag){
if(ans[i]=='0') continue;
else{
flag = !flag;
std::cout<<ans[i];
}
}
else{
std::cout<<ans[i];
}
}
if(flag) std::cout<<"0";
std::cout<<std::endl;
return 0;
}
我该怎么办有人告诉我吗QAQ