1 条题解

  • 0
    @ 2025-7-19 23:14:16

    考虑到所有的特殊情况即可。

    #include <bits/stdc++.h>
    using namespace std;
    void go(bool h)
    {
    	if(h) puts("Yes");
    	else puts("No");
    	exit(0);
    }
    int main()
    {
    	string s;
    	cin>>s;
    	bool t=false;
    	if(s[0]=='-')
    	{
    		t=true;
    		s.erase(0,1);
    	}
    	int n=s.size();
    	s=' '+s;
    	if(n==0) go(0);
    	if(n==1)
    	{
    		if(s[1]>='1'&&s[1]<='9') go(1);
    		if(s[1]=='0'&&!t) go(1);
    		go(0);
    	}
    	if(s[1]=='0'&&s[2]=='x')
    	{
    		if(n==2) go(0);
    		if(s[3]=='0')
    		{
    			if(n==3&&!t) go(1);
    			go(0);
    		}
    		for(int i=3;i<=n;i++)
    			if(s[i]<'0'||s[i]>'9'&&s[i]<'a'||s[i]>'f') go(0);
    		go(1);
    	}
    	if(s[1]=='0'&&s[2]=='.')
    	{
    		if(n==2) go(0);
    		for(int i=3;i<=n;i++)
    			if(s[i]<'0'||s[i]>'9') go(0);
    		if(!t) go(1);
    		for(int i=3;i<=n;i++)
    			if(s[i]!='0') go(1);
    		go(0);
    	}
    	if(s[1]=='0')
    	{
    		if(s[2]=='0')
    		{
    			if(n==2&&!t) go(1);
    			go(0);
    		}
    		for(int i=3;i<=n;i++)
    			if(s[i]<'0'||s[i]>'7') go(0);
    		go(1);
    	}
    	if(s[1]=='.') go(0);
    	if(s[n]=='.') go(0);
    	int e=0;
    	for(int i=1;i<=n;i++)
    		if(s[i]=='.') e++;
    	if(e>1) go(0);
    	for(int i=1;i<=n;i++)
    		if((s[i]<'0'||s[i]>'9')&&s[i]!='.') go(0);
    	go(1);
    	return 0;
    }
    
    • 1

    信息

    ID
    60
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    14
    已通过
    2
    上传者