自己构造数据全对但10分,求调
查看原帖
自己构造数据全对但10分,求调
808082
auto_water楼主2024/9/20 14:17

下载了第一个测试点数据为 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;
}

2024/9/20 14:17
加载中...