⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poj2338.cpp

📁 poi2338,北大acm里面的题目代码。
💻 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 + -