#include<cstdio> #include<cstdlib> #include<cstring> using namespace std; char str[100010]; int a[500000]; int main() { int i,k,j,n,l; scanf("%d",&k); while(k--){ scanf("%s",str); l=strlen(str); memset(a,0,sizeof(a));j=0; for(i=l-1;i>=0;--i){ if(str[i]=='A'){ a[j++]=0;a[j++]=1;a[j++]=0;a[j++]=1; } else if(str[i]=='B'){ a[j++]=1;a[j++]=1;a[j++]=0;a[j++]=1; } else if(str[i]=='C'){ a[j++]=0;a[j++]=0;a[j++]=1;a[j++]=1; } else if(str[i]=='D'){ a[j++]=1;a[j++]=0;a[j++]=1;a[j++]=1; } else if(str[i]=='E'){ a[j++]=0;a[j++]=1;a[j++]=1;a[j++]=1; } else if(str[i]=='F'){ a[j++]=1;a[j++]=1;a[j++]=1;a[j++]=1; } else { n=str[i]-'0'; int g=j; while(n){ a[j++]=n%2; n=n/2; } j=g+4; } } int e,d,h=0; for(i=0;i<j;i+=3){ d=1;n=0; for(e=i;e<i+3;++e){ n+=a[e]*d;d*=2; } a[h++]=n; } for(i=h-1;i>=0;--i) if(a[i]!=0)break; for(j=i;j>=0;--j) printf("%d",a[j]); printf("\n"); } return 0; }
原文:http://blog.csdn.net/r1986799047/article/details/43563459