11-基于dev的bug(还没想通)
十六进制转八进制
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位一结合转为八进制即可。
- //如果注释掉第27行会报错??????
- #include <iostream>
- #include <algorithm>
- #include <cstdio>
- #include <cstring>
- using namespace std;
- string str;
- string two[17] = {"0000", "0001", "0010", "0011",
- "0100", "0101", "0110", "0111",
- "1000", "1001", "1010", "1011",
- "1100", "1101", "1110", "1111"};
- int main(){
- int n;
- cin >> n;
- while(n--){
- cin >> str;
- string ss;
- string ans;
- for(int i = 0; i < str.length(); i++){
- if(str[i] >= '0' && str[i] <= '9'){
- ss += two[str[i] - '0'];
- }
- else{
- ss += two[str[i] - 'A' + 10];
- }
- }
- // cout << ss << endl; //dev如果注释掉这一行,就崩了,莫名其妙,但注释掉,直接交就可以ac
- int sum = 0;
- for(int i = ss.length() - 1; i >= 0; i--){
- if(i == 1){
- // if(ss[i] == '0' && ss[i - 1] == '0'){ //避免产生前置0
- // break;
- // }
- sum = (ss[i] - '0') * 1 + (ss[i - 1] - '0') * 2;
- ans += (sum + '0');
- break;
- }
- else if(i == 0){
- // if(ss[i] == '0'){ //避免产生前置0
- // break;
- // }
- sum = (ss[i] - '0') * 1;
- ans += (sum + '0');
- break;
- }
- else{
- sum = (ss[i] - '0') * 1 + (ss[i - 1] - '0') * 2 + (ss[i - 2] - '0') * 4;
- ans += (sum + '0');
- i -= 2;
- }
- }
- int flag = 0;
- for(int i = ans.length() - 1; i >= 0; i--){
- char ch = ans[i];
- if(ch != '0' || flag == 1){ //如果前面有前置0的情况,则要去0
- cout << ans[i];
- flag = 1;
- }
- }
- cout << endl ;
- }
- return 0;
- }
11-基于dev的bug(还没想通)的更多相关文章
- U40620 还没想好名字的题
U40620 niiickの还没想好名字的题 给定一个长度为\(n\)的序列\(a_1,a_2...,a_n\) 要求将这\(n\)个数分为\(m\)组,每组可以有任意多个数,但同一组中的数必须是原序 ...
- noi2018还没想好记
前面说点什么.. 没想到吧 嘴上说着不写的彩笔博主最后还是写了这篇东西.. Day -inf 在雅礼集训,打了四场模拟赛.. 真正说打得好的.. 也就那么一场 身体很差 心态很差 状态很差 虽然有书读 ...
- 踩了个DNS解析的坑,但我还是没想通
hello大家好,我是小楼. 最近踩了个DNS解析的小坑,虽然问题解决了,但排查过程比较曲折,最后还是有一点没有想通,整个过程分享给大家. 背景 最近负责的服务要置换机器.置换机器可能很多小伙伴不知道 ...
- 自学C Primer Plus时还没想明白的问题
2016年11月24日 1. 计算机中两个浮点数怎样进行加法运算.2. 为什么计算机在计算时存在损失精度的可能3. 无符号数和有符号数的运算是怎样的4. printf中使用格式控制符的截断问题,比如% ...
- U45490 还没想好名字的题Ⅱ
这一题的环状板 Solution 暴力断环为链, 枚举起点跑 \(n\) 遍 \(DP\), 取最小值即可 Code #include<iostream> #include<cstd ...
- 成功熬了四年还没死?一个IT屌丝创业者的深刻反思
三个IT屌丝创业的故事 从前有三个屌丝,聚在一起做网络.提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾,啥都做了.3年后终于做到了五百万用户.对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼 ...
- 你好,C++(21)只要天还没黑,就一直在工地干活-4.3.1 while循环:只要…就一直…
4.3 循环控制语句 在现实世界中,有这样一类现象: 只要油箱中的当前油量小于油箱容量100升,就一直往油箱中加油: 一直不断地为祖国辛勤工作,只要我还活着: 公司100000位员工,每个人的工资都 ...
- 谁还没遇上过NoClassDefFoundError咋地——浅谈字节码生成与热部署
谁还没遇上过NoClassDefFoundError咋地--浅谈字节码生成与热部署 前言 在Java程序员的世界里,NoClassDefFoundError是一类相当令人厌恶的错误,因为这类错误通常非 ...
- 趁webpack5还没出,先升级成webpack4吧
上一次将webpack1升级到3,也仅是 半年前,前端工具发展变化太快了,如今webpack4已经灰常稳定,传说性能提升非常高,值得升级. 一直用着的webpack3越来越慢,一分多钟的编译时间简直不 ...
随机推荐
- Sublime text代码补全插件(支持Javascript、JQuery、Bootstrap框架)
Sublime text代码补全插件(支持Javascript.JQuery.Bootstrap框架) 插件名称:javascript-API-Completions 支持Javascript.J ...
- gradle 代理设置
可以对gradle全局设置变量,也可以针对单个项目进行配置. 只需要在.gradle目录下创建一个gradle.properties文件,文件中按照如下格式添加代理配置 systemProp.http ...
- 【传输协议】HttpClient基本使用
最近工作中是做了一个handoop的hdfs系统的文件浏览器的功能,是利用webhdfs提供的rest api来访问hdfs来与hdfs进行交互的,其中大量使用HttpClient,之前一直很忙,没什 ...
- JavaBean和Map的相互转换
JavaBean和Map的相互转换 一.JavaBean 1.什么是JavaBean? JavaBean其实就是一种遵循特定写法的类,必须遵循一定的规范: 类必须由public修饰,并且保证有公共的无 ...
- linux Posix 信号量 三 (经典例子)
本文将阐述一下信号量的作用及经典例子,当中包括“<越狱>寄信”,“家庭吃水果”,“五子棋”,“接力赛跑”,“读者写者”,“四方恋爱”等 首先,讲 semWait操作(P操作)和semSig ...
- java对图片进行操作,仅仅是小demo
package com.cy.thumb; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io ...
- JSTL-c:forEach标签详解
c:forEach基本格式: <c:forEach var="每个变量名字" items="要迭代的list" varStatus="每个对象的 ...
- TensorFlow计算图,张量,会话基础知识
import tensorflow as tf get_default_graph = "tensorflow_get_default_graph.png" # 当前默认的计算图 ...
- fiddler工具条、状态栏、请求信息栏各按钮的作用
1.fiddler工具条 2.fiddler状态栏 3.请求信息栏
- python twilio 短信群发 知识留存
1. win7 32位系统,傻瓜安装Anaconda2(python 2.7) 2. 打开cmd, 输入命令pip install twilio,在线安装twilio 3. 打开Anaconda2的S ...