我不是拿字符串做的吗?
查看原帖
我不是拿字符串做的吗?
890943
Bismuth_Sulfate楼主2024/7/25 09:28

我这段代码全程字符串,为什么还会爆 UnAC 100?

#include <bits/stdc++.h>
using namespace std;
bool isvalid(string n){
	if(n=="-")return false;
	if(n=="0")return true;
	if(n[0]=='-')n = n.substr(1,n.size()-1);
	if(n[0]=='0')return false;
	return true;
}
//-1:a>b 0:a=b 1:a<b
int compare(string a,string b){
	if(a[0]=='-'){
		if(b[0]=='-'){
			a = a.substr(1,a.size()-1);
			b = b.substr(1,b.size()-1);
			if(a.size() < b.size())return -1;
			else if(a.size() > b.size())return 1;
			else{
				for(int i = 0;i < a.size();++i){
					if(a[i] < b[i])return -1;
					else if(a[i] > b[i])return 1;
				}
			}
			return 0;
		}else return 1;//a负b非负 
	}else{
		if(b[0]=='-')return -1;//a非负b负 
		else{
			if(a.size() < b.size())return 1;
			else if(a.size() > b.size())return -1;
			else{
				for(int i = 0;i < a.size();++i){
					if(a[i] < b[i])return 1;
					else if(a[i] > b[i])return -1;
				}
			}
			return 0;
		}	
	}
}
int main(){
	string l,r,n;
	int t;
	cin >> l >> r >> t;
	while(t--){
		cin >> n;
		if(isvalid(n)){
			if(compare(l,n)>0 && compare(n,r)>0)cout << "0\n";
			else cout << "2\n";
		}else cout << "1\n";
	}
	return 0;
}
2024/7/25 09:28
加载中...