#include<cstdio>#include<cstring>#include<algorithm>#include<cctype>using namespace std;char s[300];int pos;char A,B;char D_H(int x){ if(x<10) return x+'0'; else return x-10+'A';}int H_D(char x){ if(isdigit(x)) return x-'0'; else return x-'A'+10;}void LD(){ int w=H_D(s[++pos]); w=w*16+H_D(s[++pos]); pos++; A=s[w];}void ST(){ int w=H_D(s[++pos]); w=w*16+H_D(s[++pos]); pos++; s[w]=A;}void SWP(){ pos++; swap(A,B);}void ADD(){ pos++; int a,b,c; a=H_D(A); b=H_D(B); c=a+b; A=D_H(c%16); B=D_H(c/16);}void INC(){ pos++; A=D_H((H_D(A)+1)%16);}void DEC(){ pos++; A=D_H((H_D(A)+15)%16);}void BR();void BZ(){ if(A!='0') pos+=3; else { int w=H_D(s[++pos]); w=w*16+H_D(s[++pos]); pos=w; }}void BR(){ int w=H_D(s[++pos]); w=w*16+H_D(s[++pos]); pos=w;}int main(){ while(gets(s),s[0]!='8') { pos=0; A=B='0'; while(s[pos]!='8'&&pos<256) { switch(s[pos]) { case '0':LD();break; case '1':ST();break; case '2':SWP();break; case '3':ADD();break; case '4':INC();break; case '5':DEC();break; case '6':BZ();break; case '7':BR();break; } } puts(s); } return 0;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)