📄 poj2338.cpp
字号:
#include <stdio.h>
#include "iostream"
int i,j,k,m,n;
char info[1000];
int state;
double base, vula;
int v[256];
#define DEC 2
#define BDONE 5
#define DSTART 1
#define BASE 4
#define BSTART 3
#define checkTo(x) if (!(x)) {printf("no\n");goto bad;}
main(){
for (i=0;i<255;i++) v[i] = -1;
for (i=0;i<=9;i++) v[i+'0'] = i;
for (i=0;i<=5;i++) v[i+'a'] = i+10;
scanf("%d",&n);
gets(info);
while (n--) {
gets(info);
state = DSTART;
vula = base = 0;
for (i=0;info[i];i++) {
char c = info[i];
switch(state) {
case DSTART: {
checkTo(v[c] >=0 && v[c] <= 9);
vula = v[c];
state = DEC;
break;
}
case DEC: {
if (c == '#') {
checkTo(vula >= 2 && vula <= 16);
base = vula;
vula = 0;
state = BSTART;
break;
}
checkTo (v[c] >= 0 && v[c] <= 9);
vula = vula * 10 + v[c];
break;
}
case BSTART: {
checkTo (v[c] >= 0 && v[c] < base);
vula = v[c];
state = BASE;
break;
}
case BASE: {
if (c == '#') {
state = BDONE;
break;
}
checkTo (v[c] >= 0 && v[c] < base);
vula = vula * base + v[c];
break;
}
case BDONE: {
checkTo (c == '#');
checkTo (vula >=2 && vula <= 16);
base = vula;
vula = 0;
state = BSTART;
break;
}
}
}
checkTo(state == DEC || state == BDONE);
printf("yes\n");
bad:;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -