- P28's solution
P28's Solution
- 2025-9-4 21:59:20 @
考虑到所有的特殊情况即可。
#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;
}