为什么结果不一样
查看原帖
为什么结果不一样
632063
shipeiqian楼主2022/9/15 21:04

这是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 循环不一样,但意思好像是一样的?

2022/9/15 21:04
加载中...