• 蓝桥杯训练 基础练习 十六进制转八进制 (模拟 + 进制转换)


    锦囊1

    使用二进制。

    锦囊2

    先把十六进制转成二进制,每位十六进制正好转成4位二进制,然后再将二进制转成八进制,每三个二进制转成一个八进制。

    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

    输入格式
      输入的第一行为一个正整数n (1<=n<=10)。
      接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

    输出格式
      输出n行,每行为输入对应的八进制正整数。

      【注意】
      输入的十六进制数不会有前导0,比如012A。
      输出的八进制数也不能有前导0。

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

      【提示】
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。

    #include<iostream>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    
    char s1[1000000+10];
    int s2[5000000+10],s3[5000000+10];
    int main()
    {
    	int n,m,j,k,i,T;
    	cin>>n;
    	getchar();
    	while (n--)
    	{
    		memset(s1,'',sizeof(s1));
    		memset(s2,0,sizeof(s2));
    		memset(s3,0,sizeof(s3));
    		gets(s1);
    		int len = strlen(s1);
    		j=0;
    		for (i=len-1;i>=0;i--
    		)
    		{
    			int temp;
    			if (s1[i]>='A'&&s1[i]<='F')
    			temp = s1[i]-'A'+10;
    			else
    			temp = s1[i]-'0';
    			
    			int count=4;
    			while (count--)
    			{
    				s2[j++] = temp%2;
    				temp/=2;
    			}
    		}
    		/*for (i=0;i<j;i++)
    		cout<<s2[i];
    		cout<<endl;*/
    		
    		
    		int index=0;
    		for (i=0;i<j;i+=3)
    		{
    			int ans = s2[i]*1+s2[i+1]*2+s2[i+2]*4;
    			s3[index++] = ans;
    		}
    		if (s3[index-1]!=0 || index==1)//如果得到的8进制答案仅仅只有一位,而且还是0,那么就不能去掉这个所谓的前导零 
    		cout<<s3[index-1];
    		
    		for (i=index-2;i>=0;i--)
    		cout<<s3[i];
    		cout<<endl;
    	}
    	
    	return 0;
    }
    
    
  • 相关阅读:
    洛谷P1368 均分纸牌(加强版) [2017年6月计划 数论14]
    洛谷P1621 集合 [2017年6月计划 数论13]
    NOIP模拟 6.30
    洛谷P1390 公约数的和 [2017年6月计划 数论12]
    洛谷P1573 栈的操作 [2017年6月计划 数论11]
    洛谷P2429 制杖题 [2017年6月计划 数论10]
    Vijos1212 Way Selection [2017年6月计划 二分图03]
    NOIP模拟赛 6.29
    RQNOJ PID192 梦幻大PK [2017年6月计划 二分图02]
    RQNOJ PID141 / 寻找代表元 [2017年6月计划 二分图01]
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451113.html
Copyright © 2020-2023  润新知