90分,第7个点没过,求助下各位大佬
查看原帖
90分,第7个点没过,求助下各位大佬
948278
zard_y楼主2023/3/19 18:40

很难受,第7个点错了,我下载数据到本地后,测了下发现是cin读的时候没读完,但是我用别人ac代码为啥也没读完但是能过。求助下各位大佬们QAQ

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
void diff(string a, string b);
string c;
bool mark = false;
int main(){
	
    string a, b;
    cin>>a>>b;
    int al = a.length(), bl = b.length();
    if(al == bl){
        if(a >= b){
            diff(a, b);
        }else{
        	mark = true;
            diff(b, a);
        }
    }else if(al > bl){
        diff(a, b);
    }else{
    	mark = true;
        diff(b, a);    
    }
    return 0;
}
// a-b
void diff(string a, string b){
    int al = a.length(), bl = b.length();
    int dist = al - bl;
    for(int i = bl-1; i >= 0; i--){
        int bnum = b[i]-'0';
        int anum = a[i+dist]-'0';
        if(b[i] > a[i+dist]){
            anum = anum + 10;
            c += (char)((anum-bnum)+'0');
            a[i+dist-1] = (char)(a[i+dist-1]-'0'-1+'0'); 
        }else{
            c += (char)((anum-bnum)+'0');
        }
    }
    for(int i = dist-1; i >= 0; i--){
    	c += a[i];
    }
    reverse(c.begin(), c.end());
    for(int i = 0; i < c.length(); i++){
    	if(c[i] != '0' && c[i] != '-'){
    		c = c.substr(i, c.length()-i);
			break;
    	}
    	if(i == c.length()-1){
    		c = '0';
    	}
    }
    if(mark){
    	c.insert(0, "-");
    }
	cout<<c; 
}
2023/3/19 18:40
加载中...