#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> char s[10001],c[1],x[10001];//s为输入的二进制码,x为存储16进制 int main() { scanf("%s",&s);//输入二进制 int len = strlen(s),i,j;//二进制长度 long long n = 0,t = 0; for(i=0;i<len;i++){ t = s[i] - '0'; for(j = 1;j<=len-i-1;j++){ t = t * 2; } n = n + t; //转为十进制 } if(n==0){ printf("%d",0); return 0; } while(n!=0){ if(n%16>=10){ c[0]=n%16-10 +'A'; }else{ c[0]=n%16+'0'; } strcat(x,c); n/=16; } for(i=strlen(x)-1;i>=0;i--){ printf("%c",x[i]); } return 0; } /************************************************************** Problem: 1294 User: admin Language: C Result: Accepted Time:8 ms Memory:1164 kb ****************************************************************/