十六进制转八进制

http://lx.lanqiao.cn/problem.page?gpid=T51

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

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

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

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

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

思路:由十六进制转八进制利用二进制位相互转化,十六进制是4个二进制位,八进制是3个二进制位。将是十六位的数每位化为4位的二进制,在3位一结合转为八进制即可。

  1. //如果注释掉第27行会报错??????
  2.  
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <cstdio>
  6. #include <cstring>
  7. using namespace std;
  8. string str;
  9. string two[17] = {"0000", "0001", "0010", "0011",
  10. "0100", "0101", "0110", "0111",
  11. "1000", "1001", "1010", "1011",
  12. "1100", "1101", "1110", "1111"};
  13.  
  14. int main(){
  15. int n;
  16. cin >> n;
  17. while(n--){
  18. cin >> str;
  19. string ss;
  20. string ans;
  21. for(int i = 0; i < str.length(); i++){
  22. if(str[i] >= '0' && str[i] <= '9'){
  23. ss += two[str[i] - '0'];
  24. }
  25. else{
  26. ss += two[str[i] - 'A' + 10];
  27. }
  28. }
  29. // cout << ss << endl; //dev如果注释掉这一行,就崩了,莫名其妙,但注释掉,直接交就可以ac
  30. int sum = 0;
  31. for(int i = ss.length() - 1; i >= 0; i--){
  32. if(i == 1){
  33. // if(ss[i] == '0' && ss[i - 1] == '0'){ //避免产生前置0
  34. // break;
  35. // }
  36. sum = (ss[i] - '0') * 1 + (ss[i - 1] - '0') * 2;
  37. ans += (sum + '0');
  38. break;
  39. }
  40. else if(i == 0){
  41. // if(ss[i] == '0'){ //避免产生前置0
  42. // break;
  43. // }
  44. sum = (ss[i] - '0') * 1;
  45. ans += (sum + '0');
  46. break;
  47. }
  48. else{
  49. sum = (ss[i] - '0') * 1 + (ss[i - 1] - '0') * 2 + (ss[i - 2] - '0') * 4;
  50. ans += (sum + '0');
  51. i -= 2;
  52. }
  53. }
  54. int flag = 0;
  55. for(int i = ans.length() - 1; i >= 0; i--){
  56. char ch = ans[i];
  57. if(ch != '0' || flag == 1){ //如果前面有前置0的情况,则要去0
  58. cout << ans[i];
  59. flag = 1;
  60. }
  61. }
  62. cout << endl ;
  63. }
  64.  
  65. return 0;
  66. }

  

11-基于dev的bug(还没想通)的更多相关文章

  1. U40620 还没想好名字的题

    U40620 niiickの还没想好名字的题 给定一个长度为\(n\)的序列\(a_1,a_2...,a_n\) 要求将这\(n\)个数分为\(m\)组,每组可以有任意多个数,但同一组中的数必须是原序 ...

  2. noi2018还没想好记

    前面说点什么.. 没想到吧 嘴上说着不写的彩笔博主最后还是写了这篇东西.. Day -inf 在雅礼集训,打了四场模拟赛.. 真正说打得好的.. 也就那么一场 身体很差 心态很差 状态很差 虽然有书读 ...

  3. 踩了个DNS解析的坑,但我还是没想通

    hello大家好,我是小楼. 最近踩了个DNS解析的小坑,虽然问题解决了,但排查过程比较曲折,最后还是有一点没有想通,整个过程分享给大家. 背景 最近负责的服务要置换机器.置换机器可能很多小伙伴不知道 ...

  4. 自学C Primer Plus时还没想明白的问题

    2016年11月24日 1. 计算机中两个浮点数怎样进行加法运算.2. 为什么计算机在计算时存在损失精度的可能3. 无符号数和有符号数的运算是怎样的4. printf中使用格式控制符的截断问题,比如% ...

  5. U45490 还没想好名字的题Ⅱ

    这一题的环状板 Solution 暴力断环为链, 枚举起点跑 \(n\) 遍 \(DP\), 取最小值即可 Code #include<iostream> #include<cstd ...

  6. 成功熬了四年还没死?一个IT屌丝创业者的深刻反思

    三个IT屌丝创业的故事 从前有三个屌丝,聚在一起做网络.提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾,啥都做了.3年后终于做到了五百万用户.对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼 ...

  7. 你好,C++(21)只要天还没黑,就一直在工地干活-4.3.1 while循环:只要…就一直…

    4.3  循环控制语句 在现实世界中,有这样一类现象: 只要油箱中的当前油量小于油箱容量100升,就一直往油箱中加油: 一直不断地为祖国辛勤工作,只要我还活着: 公司100000位员工,每个人的工资都 ...

  8. 谁还没遇上过NoClassDefFoundError咋地——浅谈字节码生成与热部署

    谁还没遇上过NoClassDefFoundError咋地--浅谈字节码生成与热部署 前言 在Java程序员的世界里,NoClassDefFoundError是一类相当令人厌恶的错误,因为这类错误通常非 ...

  9. 趁webpack5还没出,先升级成webpack4吧

    上一次将webpack1升级到3,也仅是 半年前,前端工具发展变化太快了,如今webpack4已经灰常稳定,传说性能提升非常高,值得升级. 一直用着的webpack3越来越慢,一分多钟的编译时间简直不 ...

随机推荐

  1. Sublime text代码补全插件(支持Javascript、JQuery、Bootstrap框架)

    Sublime text代码补全插件(支持Javascript.JQuery.Bootstrap框架)   插件名称:javascript-API-Completions 支持Javascript.J ...

  2. gradle 代理设置

    可以对gradle全局设置变量,也可以针对单个项目进行配置. 只需要在.gradle目录下创建一个gradle.properties文件,文件中按照如下格式添加代理配置 systemProp.http ...

  3. 【传输协议】HttpClient基本使用

    最近工作中是做了一个handoop的hdfs系统的文件浏览器的功能,是利用webhdfs提供的rest api来访问hdfs来与hdfs进行交互的,其中大量使用HttpClient,之前一直很忙,没什 ...

  4. JavaBean和Map的相互转换

    JavaBean和Map的相互转换 一.JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无 ...

  5. linux Posix 信号量 三 (经典例子)

    本文将阐述一下信号量的作用及经典例子,当中包括“<越狱>寄信”,“家庭吃水果”,“五子棋”,“接力赛跑”,“读者写者”,“四方恋爱”等 首先,讲 semWait操作(P操作)和semSig ...

  6. java对图片进行操作,仅仅是小demo

    package com.cy.thumb; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io ...

  7. JSTL-c:forEach标签详解

    c:forEach基本格式: <c:forEach var="每个变量名字" items="要迭代的list" varStatus="每个对象的 ...

  8. TensorFlow计算图,张量,会话基础知识

    import tensorflow as tf get_default_graph = "tensorflow_get_default_graph.png" # 当前默认的计算图 ...

  9. fiddler工具条、状态栏、请求信息栏各按钮的作用

    1.fiddler工具条 2.fiddler状态栏 3.请求信息栏

  10. python twilio 短信群发 知识留存

    1. win7 32位系统,傻瓜安装Anaconda2(python 2.7) 2. 打开cmd, 输入命令pip install twilio,在线安装twilio 3. 打开Anaconda2的S ...