zoukankan      html  css  js  c++  java
  • 基础练习 十六进制转八进制

     #include<bits/stdc++.h>
    
     using namespace std;
     int main()
     {
         int n;
         cin>>n;
         string str;
         while(n--)
         {
             cin>>str;
             string two;
             int len=str.length();
             for(int i=0;i<len;i++)
             {
                if(str[i]=='0') two+="0000";
                else if(str[i]=='1') two+="0001";
                else if(str[i]=='2') two+="0010";
                else if(str[i]=='3') two+="0011";
                else if(str[i]=='4') two+="0100";
                else if(str[i]=='5') two+="0101";
                else if(str[i]=='6') two+="0110";
                else if(str[i]=='7') two+="0111";
                else if(str[i]=='8') two+="1000";
                else if(str[i]=='9') two+="1001";
                else if(str[i]=='A') two+="1010";
                else if(str[i]=='B') two+="1011";
                else if(str[i]=='C') two+="1100";
                else if(str[i]=='D') two+="1101";
                else if(str[i]=='E') two+="1110";
                else  two+="1111";
    
             }
             //cout<<two<<endl;
             len=two.length();
             if(len%3==1) two="00"+two;
             else if(len%3==2) two="0"+two;
             len=two.length();
             //cout<<two<<endl;
            // cout<<len<<endl;
             int *num=new int[len/3+3];
             int t;
             for(int i=len-1,t=0;i>=2;i-=3,t++)
             {
                 num[t]=two[i]-'0'+(two[i-1]-'0')*2+(two[i-2]-'0')*4;
             }
             //cout<<num[0]<<endl;
             for(int i=len/3-1;i>=0;i--)
             {
                 if(num[i]==0&&i==len/3-1) continue;
                    printf("%d",num[i]);
             }
    
             cout<<endl;
    
         }
    
     }
    View Code
      基础练习 十六进制转八进制  
    时间限制:1.0s   内存限制:512.0MB
          
    问题描述
      给定n个十六进制正整数,输出它们对应的八进制数。

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

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

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

    样例输入
      2
      39
      123ABC

    样例输出
      71
      4435274

      提示
      先将十六进制数转换成某进制数,再由某进制数转换成八进制。
     
     
     
    问题说明: 剔除输出结果首位上的0
  • 相关阅读:
    序列
    笔算开方法
    笔算开方法
    【AFO】闷声发大财
    P1092 虫食算[搜索]
    数据结构总结
    P1486 [NOI2004]郁闷的出纳员[权值线段树]
    P1850 换教室[dp+期望]
    P4281 [AHOI2008]紧急集合 / 聚会[LCA]
    P5021 赛道修建[贪心+二分]
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/5250558.html
Copyright © 2011-2022 走看看