#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這個雖然在八進制內是對的,但是在十進制的情況下是錯誤的。