#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> char s[10001];//s为输入的十六进制 char t[1]; char n[10001]; int main() { scanf("%s",&s); int len = strlen(s);//获取十六进制的长度 long long i,j; long long x,sum=0; for(i=0;i<len;i++){ if(isdigit(s[i])!=0){ //如果为数字 x=s[i]-'0'; }else { x=s[i]-'A'+10; //如果为字母 } for(j=1;j<=len-i-1;j++){ x=x*16; } sum+=x; //此时sum为整型 } if(sum==0){ printf("%d",0); return 0; } while(sum!=0){ t[0]=sum%2+'0'; //t[0]为字符型 strcat(n,t); //拼接字符串 sum/=2; } for(i=strlen(n)-1;i>=0;i--){ printf("%c",n[i]); } return 0; } /************************************************************** Problem: 1306 User: admin Language: C Result: Accepted Time:14 ms Memory:1164 kb ****************************************************************/