这是90pts的代码:
#include <bits/stdc++.h>
using namespace std;
const int N=11451;
string a,b;
int maxl,num1[N],num2[N],ans[N];
bool p;
int main(){
cin >>a >>b;
if((a.size()==b.size()&&a<b)||a.size()<b.size()){
swap(a,b);
p=true;
}
for(int i=a.size();i;i--)num1[i]=a[a.size()-i]-'0';
for(int i=b.size();i;i--)num2[i]=b[b.size()-i]-'0';
maxl=max(a.size(),b.size());
for(int i=1;i<=maxl;i++){
if(num1[i]<num2[i]){
num1[i+1]--;
num1[i]+=10;
}
ans[i]=num1[i]-num2[i];
}
while(ans[maxl]==0)maxl--;
if(p)cout <<'-';
for(int i=maxl;i;i--)cout <<ans[i];
if(maxl<1)cout <<0;
return 0;
}
AC Code:
#include <bits/stdc++.h>
using namespace std;
const int N=11451;
string a,b;
int maxl,num1[N],num2[N],ans[N];
bool p;
int main(){
cin >>a >>b;
if((a.size()==b.size()&&a<b)||a.size()<b.size()){
swap(a,b);
p=true;
}
for(int i=a.size();i>0;i--)num1[i]=a[a.size()-i]-'0';
for(int i=b.size();i>0;i--)num2[i]=b[b.size()-i]-'0';
maxl=max(a.size(),b.size());
for(int i=1;i<=maxl;i++){
if(num1[i]<num2[i]){
num1[i+1]--;
num1[i]+=10;
}
ans[i]=num1[i]-num2[i];
}
while(ans[maxl]==0)maxl--;
if(p)cout <<'-';
for(int i=maxl;i>0;i--)cout <<ans[i];
if(maxl<1)cout <<0;
return 0;
}
只有 for 循环不一样,但意思好像是一样的?