BASIC-12_蓝桥杯_十六进制转八进制
总结:
1.使用库函数可有效节省空间,但时间花费较多;
2.由于本题的输入数据较大,又限制时间,故要注意利用空间换时间;
3.使用顺序结构换取最小运行时间;
示例代码:
#include <stdio.h>
#include <string.h>
#define N1 100000 /*16进制*/
#define N2 400008 /*2进制*/
int main(void)
{
int n = 0 ;
int i = 0 , j = 0 , k = 0 , len = 0;
int flag = 0 , sum = 0 ;
char arr[N1] , num[N2];
scanf("%d",&n);
for (i = 0 ; i < n ; i ++)
{
memset(num,'\0',N2);
scanf("%s",&arr);
len = strlen(arr);
k = 0;
/*
16进制转2进制,再转8进制,不足3的倍数补0
*/
if (len%3 == 1)
{
num[0] = num[1] = '0' ;
k += 2;
}
else if (len%3 == 2)
{
num[0] = '0';
k += 1;
}
for (j = 0 ; j < len ; j ++ , k += 4)
{
switch(arr[j])
{
case '0' : num[k]='0',num[k+1]='0',num[k+2]='0',num[k+3]='0';break;
case '1' : num[k]='0',num[k+1]='0',num[k+2]='0',num[k+3]='1';break;
case '2' : num[k]='0',num[k+1]='0',num[k+2]='1',num[k+3]='0';break;
case '3' : num[k]='0',num[k+1]='0',num[k+2]='1',num[k+3]='1';break;
case '4' : num[k]='0',num[k+1]='1',num[k+2]='0',num[k+3]='0';break;
case '5' : num[k]='0',num[k+1]='1',num[k+2]='0',num[k+3]='1';break;
case '6' : num[k]='0',num[k+1]='1',num[k+2]='1',num[k+3]='0';break;
case '7' : num[k]='0',num[k+1]='1',num[k+2]='1',num[k+3]='1';break;
case '8' : num[k]='1',num[k+1]='0',num[k+2]='0',num[k+3]='0';break;
case '9' : num[k]='1',num[k+1]='0',num[k+2]='0',num[k+3]='1';break;
case 'A' : num[k]='1',num[k+1]='0',num[k+2]='1',num[k+3]='0';break;
case 'B' : num[k]='1',num[k+1]='0',num[k+2]='1',num[k+3]='1';break;
case 'C' : num[k]='1',num[k+1]='1',num[k+2]='0',num[k+3]='0';break;
case 'D' : num[k]='1',num[k+1]='1',num[k+2]='0',num[k+3]='1';break;
case 'E' : num[k]='1',num[k+1]='1',num[k+2]='1',num[k+3]='0';break;
case 'F' : num[k]='1',num[k+1]='1',num[k+2]='1',num[k+3]='1';break;
default:break;
}
}
for (j = 0 , flag = 0; j < k ; j += 3)
{
if (num[j+0] == '0' && num[j+1] == '0' && num[j+2] == '0')
sum = 0;
else if (num[j+0] == '0' && num[j+1] == '0' && num[j+2] == '1')
sum = 1;
else if (num[j+0] == '0' && num[j+1] == '1' && num[j+2] == '0')
sum = 2;
else if (num[j+0] == '0' && num[j+1] == '1' && num[j+2] == '1')
sum = 3;
else if (num[j+0] == '1' && num[j+1] == '0' && num[j+2] == '0')
sum = 4;
else if (num[j+0] == '1' && num[j+1] == '0' && num[j+2] == '1')
sum = 5;
else if (num[j+0] == '1' && num[j+1] == '1' && num[j+2] == '0')
sum = 6;
else if (num[j+0] == '1' && num[j+1] == '1' && num[j+2] == '1')
sum = 7;
/*当为000时省略*/
if (sum)
{
flag = 1;
}
if (flag)
{
printf("%d",sum);
}
}
printf("\n");
}
return 0;
}
BASIC-12_蓝桥杯_十六进制转八进制的更多相关文章
- BASIC-11_蓝桥杯_十六进制转十进制
注意事项: 1.长数据注意选择long long类型,用%ldd输出,防止数据溢出; 示例代码: #include <stdio.h>#include <string.h>#i ...
- BASIC-10_蓝桥杯_十进制转十六进制
示例代码: #include <stdio.h>#define N 16 void dg(int a){ int y = a%N; int next = (a-y)/N; if (next ...
- 蓝桥杯_算法训练_ALGO10_集合运算
这个题实际上思路是比较简单的,但是需要注意细节问题. 思路:读入数组之后进行排序,然后再求交.并.补集. 首先排序:(使用的是冒泡排序) #include<iostream> using ...
- 蓝桥杯_算法训练_Torry的困惑(基本型)
这个题目就是求质数的乘积,在加一个模,思路比较简单,直接上代码: #include<iostream> using namespace std; bool isPrime(int a) { ...
- 蓝桥杯_算法训练_区间k大数查询
问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数 ...
- ALGO-43_蓝桥杯_算法训练_A+B Problem
问题描述 输入A,B. 输出A+B. 输入格式 输入包含两个整数A,B,用一个空格分隔. 输出格式 输出一个整数,表示A+B的值. 样例输入 样例输出 数据规模和约定 -,,,<=A,B< ...
- ALGO-39_蓝桥杯_算法训练_数组排序去重
问题描述 输入10个整数组成的序列,要求对其进行升序排序,并去掉重复元素. 输入格式 10个整数. 输出格式 多行输出,每行一个元素. 样例输入 样例输出 解题思路: 若输入的数字存在数组中,剔除,否 ...
- ALGO-115_蓝桥杯_算法训练_和为T(枚举)
问题描述 从一个大小为n的整数集中选取一些元素,使得它们的和等于给定的值T.每个元素限选一次,不能一个都不选. 输入格式 第一行一个正整数n,表示整数集内元素的个数. 第二行n个整数,用空格隔开. 第 ...
- ALGO-117_蓝桥杯_算法训练_友好数
问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:+= 4的约数和有:+= 所以9和4不是友好的. 220的约数和有: = 284的约 ...
随机推荐
- windows 开发者神器 tc – total command和替代品
作为开发者,windows上开发时,会运用一些神器,比如:total commander,搜索目录.查看文件.批量重命名等非常方便. tc是收费版的,有个免费的替代版本Just manager:htt ...
- 玩转X-CTR100 l STM32F4 l SD卡FatFs文件系统
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有SD卡接口,本教程使用免费 ...
- JavaScript事件简述
事件简述 技术一般水平有限,有什么错的地方,望大家指正. 事件是我们平时经常使用,这次就来了解一下事件.首先我们要明确几个概念,JavaScript是单线程,浏览器是多线程的,并不是所有的事件处理函数 ...
- 关于Java Logger类的使用问题 - 内存不释放
原文地址:http://www.ihuxu.com/p/236.html 说明:这是一个利用Java Logger类的示例,完成简单的日志记录功能.代码中有部分类库没有说明,但不影响阅读. 本人技 ...
- avalon 路由问题
1, 直接使用avalon的 amd加载器, 可以不需要 require.js 2, 配置baseUrl 路径, 这个一定要在 js所在的目录, 而不是jsp所在的目录, 如果js 和jsp分开 ...
- makefile的一个错误:*** missing separator
原文转自:http://blog.sina.com.cn/s/blog_87c063060101c9yp.html 1.在写 多目录下makefile的时候,碰到一个错误提示,让我纠结许久,后面还是解 ...
- WebGL编程指南案例解析之纹理叠加
var vShader = ` attribute vec4 a_Position; attribute vec2 a_TexCoord; varying vec2 v_TexCoord; void ...
- Android Mokoid Open Source Project hacking
/***************************************************************************** * Android Mokoid Open ...
- Unity3D游戏-愤怒的小鸟游戏源码和教程(二)
Unity愤怒的小鸟游戏教程(二) 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) AngryEva游戏效果 ...
- xdoj-1149(多重集合+容斥原理+组合数取模)
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; ty ...