系统显示测试超时。。。尴尬
#include<cstdio> #include<iostream> #include<cstring> #include<math.h> using namespace std; int num[400005],num_o[400005]; char num_x[100005]; int main() { memset(num,0,sizeof(num)); int n,i,j,len; scanf("%d",&n); for(i=0; i<n; i++) { scanf("%s",num_x); len=strlen(num_x); int t=len*4-1; int p=0; for(j=0; j<len; j++) { int xx; if(num_x[j]>='A'&&num_x[j]<='F') { xx=num_x[j]-'A'+10; } else xx=num_x[j]-'0'; // printf("%d ",xx); int res[10]= {0},s=4; while(xx) { res[s++]=(xx&1); xx>>=1; } s=4; for(int rr=t-3; rr<=t; rr++) { num[rr]=res[s++]; } t-=4; } /* for(int jj=0; jj<len*4; jj++) { printf("%d",num[jj]); } puts("");*/ int tmp=0; for(int k=0; k<=len*4+3; k++) { // if(k%3==0&&k!=0) { num_o[p++]=tmp; tmp=0; } if(num[k]) tmp+=1<<(k%3); } // puts(""); int pp=1; for(i=p-1; i>=0; i--) { if(pp&&num_o[i]!=0) { pp=0; printf("%d",num_o[i]); } else if(!pp) { printf("%d",num_o[i]); } } printf(" "); } return 0; }