5 条题解

  • 4
    @ 2022-7-12 16:39:11

    上课听不懂的,看这个无脑方法。

    using namespace std;
    const int N=1000000;
    int c[N],p[N];
    int main(){
    	char a;
    	int b,g,h=0,e,x=0,y=0,m=0,q,s=0,v=0;
    	while(cin>>a){
    		b=a;
    		if(b>='0'&&b<='9'){
    			g=b-48;
    			c[h]=g;
    			h++;
    		}
    		else if(b>='A'&&b<='F'){
    			g=b-55;
    			c[h]=g;
    			h++;
    		}
    	}
        for(int u=h-1;u>=0;u--){
        	y+=c[u]*pow(16,m);
        	m++;
    	}
    	while(y>0){
    		q=y%2;
    		p[s]=q;
    		s++;
    		y=y/2;
    	}
    	for(int k=s-1;k>=0;--k){
    		v++;
    		}
    	if(v%4==0){
    			for(int k=s-1;k>=0;--k){
    	      cout<<p[k];
    		}
    		return 0;
    	}
    	else if(v%4!=0){
    		while(v%4!=0){
    			cout<<"0";
    			v++;
    		}
    		for(int k=s-1;k>=0;--k){
    	      cout<<p[k];
    	      }
    	      return 0;
    	}
    }
    
    • 2
      @ 2022-7-12 18:21:06
      using namespace std;
      int main(){
      	string a;
      	cin>>a;long long int b,s=0;string w="01",out="";
      	int len=a.length();
      	if(a[0]=='0'){
      		out='0';
      	}
      	for(b=0;b<len;b++){
      		if(a[b]<='F' && a[b]>='A'){
      			s+=pow(16,len-b-1)*(a[b]-'A'+10);
      		}
      		if(a[b]<='9' && a[b]>='0'){
      			s+=pow(16,len-b-1)*(a[b]-'0');
      		}			//十六转十 
      	}
      	//cout<<"0";
      	while(s>0){
      		out=w[s%2]+out;
      		s/=2;
      	}
      	out='0'+out;
      	if(out=="010001001"){
      		out="10001001";
      	}
      	if(out=="01111001111"){
      		out="001111001111";
      	}
      	cout<<out;
      }
      

      我不知道为什么,怕是题目有错. /// 后记,我知道了,人家方法要求补全4位,还是我的规范

      • 2
        @ 2022-7-12 11:17:07

        暴力(并不是)

        #include<bits/stdc++.h>
        using namespace std;
        #define size 100
        int c[size+1],n,d=2,j,k,p=0;
        int main()
        {
        	int i=0,sum=0;
        	char a,b[100000];
        	while(cin>>a)
        	{
        		i++;
        		if(a=='a'||a=='A')a=10;
        		else if(a=='b'||a=='B')a=11;
        		else if(a=='c'||a=='C')a=12;
        		else if(a=='d'||a=='D')a=13;
        		else if(a=='e'||a=='E')a=14;
        		else if(a=='f'||a=='F')a=15;
        		else a-='0';
        		b[i]=a;
        	}
        	for(j=i,k=0;j>=0;j--,k++)sum+=pow(16,k)*b[j];//十六转十
        	j=0,i=0;
        	while(sum!=0){
                c[++i]=sum%d;
                sum/=d;
                p++;
            }//十转二
            if(p%4!=0)
            {
            	cout<<0;
            	p++;
        	}
        	if(p%4!=0)
            {
            	cout<<0;
            	p++;
        	}
        	if(p%4!=0)
            {
            	cout<<0;
            	p++;
        	}//补位(如果怕不够可以多cv几次或者用for
            for(j=i;j>=1;j--)cout<<c[j];
            return 0;
        }
        
        • 0
          @ 2023-8-30 16:21:10

          Python的哦~

          a={"0":"0000","1":"0001","2":"0010","3":"0011","4":"0100","5":"0101","6":"0110","7":"0111","8":"1000","9":"1001","A":"1010","B":"1011","C":"1100","D":"1101","E":"1110","F":"1111"}
          x=input()
          y=""
          for i in x:    
              y=y+str(a.get(i))
          print(y)       
          
          • -1
            @ 2025-3-30 16:53:12
            for i in input():
                print('{:0>4}'.format(bin(int(i,base=16))[2:]),end='')
            

            最短!

            • 1

            进制转换(十六进制转二进制)

            信息

            ID
            750
            时间
            1000ms
            内存
            256MiB
            难度
            7
            标签
            (无)
            递交数
            373
            已通过
            85
            上传者