lqb 基础练习 十六进制转八进制 (字符串进行进制转化)

基础练习 十六进制转八进制

时间限制:1.0s   内存限制:512.0MB

问题描述

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

输入格式

  输入的第一行为一个正整数n (1<=n<=10)。

  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式

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

  【注意

  输入的十六进制数不会有前导0,比如012A。

  输出的八进制数也不能有前导0。

样例输入

  2

  39

  123ABC

样例输出

  71

  4435274

  提示

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

分析:

  将输入的十六进制转化为对应的二进制,

  再将二进制转化为对应的八进制就简单多了

PS:

  十六进制输入输出%x(字母部分用小写) 或者 %X(字母部分用大写)

  八进制输入输出 %o

  十进制输入输出 %d.

  (备注:用于这道题数据量较大不能使用简单的数据类型转化解决所有的数据)

C/C++代码实现(AC):

  

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9
10 using namespace std;
11
12 int main()
13 {
14     int n;
15     scanf("%d", &n);
16     while(n --)
17     {
18         string str1, str2;
19         cin >>str1;
20         int len = str1.size();
21         for (int i=0; i<len; ++i) {
22             if (str1[i] == ‘0‘) str2 += "0000";
23             else if (str1[i] == ‘1‘) str2 += "0001";
24             else if (str1[i] == ‘2‘) str2 += "0010";
25             else if (str1[i] == ‘3‘) str2 += "0011";
26             else if (str1[i] == ‘4‘) str2 += "0100";
27             else if (str1[i] == ‘5‘) str2 += "0101";
28             else if (str1[i] == ‘6‘) str2 += "0110";
29             else if (str1[i] == ‘7‘) str2 += "0111";
30             else if (str1[i] == ‘8‘) str2 += "1000";
31             else if (str1[i] == ‘9‘) str2 += "1001";
32             else if (str1[i] == ‘A‘) str2 += "1010";
33             else if (str1[i] == ‘B‘) str2 += "1011";
34             else if (str1[i] == ‘C‘) str2 += "1100";
35             else if (str1[i] == ‘D‘) str2 += "1101";
36             else if (str1[i] == ‘E‘) str2 += "1110";
37             else if (str1[i] == ‘F‘) str2 += "1111";
38         }
39
40         int len_ = str2.size();
41         if (len_ % 3 == 1) str2 = "00" + str2;
42         if (len_ % 3 == 2) str2 = "0" +str2;
43
44         int len_now = str2.size(), flag = 0, temp;
45         for (int i = 0; i < len_now; i += 3)
46         {
47             temp = int(str2[i] - ‘0‘) * 4 + int(str2[i + 1] - ‘0‘) * 2
48                    + int(str2[i + 2] - ‘0‘);
49             if (temp) flag = 1;
50             if (flag) printf("%d", temp);
51         }
52         printf("\n");
53     }
54     return 0;
55 }

原文地址:https://www.cnblogs.com/GetcharZp/p/9033654.html

时间: 2024-10-01 01:28:48

lqb 基础练习 十六进制转八进制 (字符串进行进制转化)的相关文章

Oracle通过函数进行进制转化

十六进制转化为十进制:to_number() SQL> select to_number('a','x') from dual; TO_NUMBER('A','X') ------------------                 10 十进制转化为十六进制:to_char() SQL> select to_char(10,'xxx') from dual; TO_CHAR(10,' ------------    a 二进制没有办法直接转化可以通过函数实现: 十进制转化为二进制 CRE

蓝桥杯 基础练习 十六进制转八进制 【字符串处理】

  基础练习 十六进制转八进制   时间限制:1.0s   内存限制:512.0MB      问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000. 输出格式 输出n行,每行为输入对应的八进制正整数. 注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0. 样例输入 2 39

1501091239-蓝桥杯-基础练习 十六进制转八进制

基础练习 十六进制转八进制 时间限制:1.0s   内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000. 输出格式 输出n行,每行为输入对应的八进制正整数. 注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0. 样例输入 2 39 123ABC 样

【蓝桥杯】 基础练习 十六进制转八进制

基础练习 十六进制转八进制 时间限制:1.0s   内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000. 输出格式 输出n行,每行为输入对应的八进制正整数. 注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0. 样例输入 239123ABC 样例输

蓝桥杯-基础练习-十六进制转八进制(被超时了!!!)

基础练习 十六进制转八进制 时间限制:1.0s   内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000. 输出格式 输出n行,每行为输入对应的八进制正整数. 注意 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0. 样例输入 2 39 123ABC 样

更快地进行进制转换

更快地进行进制转换 本文主要针对二进制,八进制,十进制,十六进制中的一些转换提供一些技巧和思路,以加快进制转换的手算及心算速度. 十进制转换成其他进制 这里我举一个37.625(十进制)转换为二进制的例子来说明计算方法 分成两个步骤 步骤1 打表,以1为基础,向左不断乘以2,向右不断除以2 得出32 16 8 4 2 1 0.5 0.25 0.125 的表 步骤2 根据步骤1打出的表,每次取表中最大的数来进行减法运算,如果能被最大的数减去(结果大于等于0即能被减去)那么就减去该最大数,然后不断循

使用JavaScript进行进制转换

JS 是一个很神奇的语言,内制的的很多函数可以帮我们进行数(进)制转换: JS中可以直接使用16进制: var a = 0xff; //255 将任意进制字符串转换为十进制,如二进制,八进制,十六进制, 第二数数不写即为最常用的转换为整型十进制: parseInt("11", 2);   // 3   2进制转10进制 parseInt("77", 8);   // 63  8进制转10进制 parseInt("af", 16);  //175 

python如何用format进行进制转换与如何删除进制前缀

10进行十进制,十六进制,八进制,二进制的转换:(#:保留进制前缀)对于带着进制前缀的,如"0x"“0o”“0b”,可以直接在后面加上’x’‘o’'b’进行删除:其他的一些小技巧:format(num, ",")快速分割千分位数字是补全多少位,^居中 >右对齐 <左对齐*^10Unexpected text node: '&ThickSpace;'Unexpected text node: '&ThickSpace;'?一共10位,居中,

蓝桥杯 基础练习 十六进制转八进制

问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由0~9.大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000. 输出格式 输出n行,每行为输入对应的八进制正整数. [注意] 输入的十六进制数不会有前导0,比如012A. 输出的八进制数也不能有前导0. 样例输入 2 39 123ABC 样例输出 71 4435274 [提示] 先将十六进制数转换成某进制数,再由