zoukankan      html  css  js  c++  java
  • 十六进制转八进制

     1 #include <iostream>  
     2 #include <string>  
     3 using namespace std;  
     4   
     5 int main()  
     6 {  
     7     int n;  
     8     cin>>n;  
     9     for(int k=1;k<=n;k++)  
    10     {  
    11         string s1,s2;//s1为输入的原始的十六进制串,s2为转化成的二进制串  
    12         cin>>s1;  
    13         s2="";//初始化  
    14         for(int i=0;i<s1.length();i++)//遍历,字符串上加上每一位  
    15         {  
    16             switch(s1[i])  
    17             {  
    18                 case '0':s2+="0000";break;  
    19                 case '1':s2+="0001";break;  
    20                 case '2':s2+="0010";break;  
    21                 case '3':s2+="0011";break;  
    22                 case '4':s2+="0100";break;  
    23                 case '5':s2+="0101";break;  
    24                 case '6':s2+="0110";break;  
    25                 case '7':s2+="0111";break;  
    26                 case '8':s2+="1000";break;  
    27                 case '9':s2+="1001";break;  
    28                 case 'A':s2+="1010";break;  
    29                 case 'B':s2+="1011";break;  
    30                 case 'C':s2+="1100";break;  
    31                 case 'D':s2+="1101";break;  
    32                 case 'E':s2+="1110";break;  
    33                 case 'F':s2+="1111";break;  
    34                 default:break;  
    35             }  
    36         }  
    37         int len=s2.length();  
    38   
    39         if(len%3==1)//三个二进制为一位八进制,二进制串前面补0,确保二进制串的长度为3的倍数  
    40             s2="00"+s2;  
    41         else if(len%3==2)  
    42             s2="0"+s2;  
    43         int flag=0;  
    44         for(int i=0;i<=s2.length()-3;i+=3)  
    45         {  
    46             int num=4*(s2[i]-'0')+2*(s2[i+1]-'0')+(s2[i+2]-'0');  
    47             if(num)  
    48                 flag=1;//忽略前导0  
    49             if(flag)  
    50                 cout<<num;  
    51         }  
    52         cout<<endl;  
    53     }  
    54     return 0;  
    55 }  

    这道题的精髓就在于通过二进制做桥梁,这样可以减少时间。

  • 相关阅读:
    L3-007. 天梯地图
    智能算法-遗传算法
    L2-012. 关于堆的判断
    L2-010. 排座位
    计算几何初步-三点顺序
    L3-001. 凑零钱
    靠二进制画几何[图论]
    【排序】
    欧拉路与欧拉回路
    Test on 2016/09/26
  • 原文地址:https://www.cnblogs.com/hcd-dyh/p/8682955.html
Copyright © 2011-2022 走看看