#include<stdio.h>
#include<string.h>
int isten(char *p,int n){
int i=0;
if(p[0]!='0'){
for(i=0;i<n;i++){
if((p[i]-'0'>9)||(p[i]-'0'<0))return 0;
}
}else return 0;
return 1;
}
int iseight(char *p,int n){
int i=0;
if(p[1]!='0'){
for(i=1;i<n;i++){
if((p[i]-'0'>7)||(p[i]-'0'<0))return 0;
}
}else return 0;
return 1;
}
int issixteen(char *p,int n){
int i=0;
if(p[2]!=0){
for(i=2;i<n;i++){
if(((p[i]-'0'>9)&&(p[i]<'A'))||(p[i]-'0'<0)||((p[i]>'F')&&(p[i]<'a'))||(p[i]>'f'))return 0;
}
}else return 0;
return 1;
}
int main(void){
char str[100];
while(scanf("%s",str)!=EOF){
if(((str[1]=='x')||(str[1]=='X'))&&str[0]=='0'){
if(issixteen(str,strlen(str)))printf("Yes\n");
else{printf("No\n");}
}else if(str[0]=='0'){
if(iseight(str,strlen(str))){printf("Yes\n");}
else{printf("No\n");}
}else if((str[0]<='9')&&(str[0]>'0')){
if(isten(str,strlen(str))){printf("Yes\n");}
else {printf("No\n");}
}else{printf("No\n");}
}
return 0;
}
懒得写题目了。。大概思路很简单,先判断0x(16进制),在判断0(8进制),最后判断10进制,一个细节,进制位之后的第一个位不能为零。比如十进制的100,不能写成0100这个虽然在八进制内是对的,但是在十进制的情况下是错误的。