博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础练习 十六进制转八进制
阅读量:4344 次
发布时间:2019-06-07

本文共 1435 字,大约阅读时间需要 4 分钟。

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

39

123ABC
样例输出
71

4435274
提示
  先将十六进制数转换成某进制数,再由某进制数转换成八进制。
#include
#include
#include
using namespace std;char s[100100]; int num[500010];int main(){ int t; scanf("%d",&t); while(t--) { scanf("%s",s); int l=strlen(s); int j=0; for(int i=l-1;i>=0;i--) { if(s[i]=='A') { num[j++]=0,num[j++]=1; num[j++]=0,num[j++]=1; } else if(s[i]=='B') { num[j++]=1,num[j++]=1; num[j++]=0,num[j++]=1; } else if(s[i]=='C') { num[j++]=0,num[j++]=0; num[j++]=1,num[j++]=1; } else if(s[i]=='D') { num[j++]=1,num[j++]=0; num[j++]=1,num[j++]=1; } else if(s[i]=='E') { num[j++]=0,num[j++]=1; num[j++]=1,num[j++]=1; } else if(s[i]=='F') { num[j++]=1,num[j++]=1; num[j++]=1,num[j++]=1; } else { int g=j; int n=s[i]-'0'; while(n) { num[j++]=n%2; n=n/2; } j=g+4; } } int e,d,h=0; for(int i=0;i
=0;k--) if(num[k]!=0) break; for(int i=k;i>=0;--i) printf("%d",num[i]); printf("\n"); memset(num,0,sizeof(num)); memset(s,'\0',sizeof(s)); } return 0;}
 

转载于:https://www.cnblogs.com/playboy307/p/5273611.html

你可能感兴趣的文章
常用的nginx rewrite重写规则
查看>>
[转]PHP正则表达式
查看>>
mybatis 嵌套查询与懒加载
查看>>
Vm workstation安装win8 的问题
查看>>
one list to muti list
查看>>
Regular Expression Patterns
查看>>
在 Linux 下使用 水星MW150cus (RTL8188CUS芯片)无线网卡
查看>>
JavaScript中的方法重载
查看>>
Js中变量的作用域
查看>>
sql--截取字段中的部分数据
查看>>
linux 遇到(vsftpd)—500 OOPS:chroot
查看>>
[Eigen]C++开源线代库
查看>>
java实现简单的单点登录
查看>>
GIS学习之栅格数据
查看>>
C# model代码生成器
查看>>
NCO3部署到服务器后无法连接到SAP
查看>>
Eclipse Debug
查看>>
CodeForces 149D Coloring Brackets
查看>>
[转]PLSQL Developer备份恢复oracle数据
查看>>
[转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
查看>>