进制转换练习
2016-03-10 11:54
281 查看
基础练习 十六进制转八进制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
AC代码:
基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
AC代码:
基础练习 十进制转十六进制
时间限制:1.0s 内存限制:512.0MB
问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。
输入格式
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
输出这个整数的16进制表示
样例输入
30
样例输出
1E
AC代码:
基础练习 十六进制转八进制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
[b]【提示[/b]】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
时间限制:1.0s 内存限制:512.0MB
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define inf 0x3f3f3f3f #define T 1000010 typedef long long ll; char s[T]; int n,c,num[T],n8[T],len; int fun(char str) { if(str>='A'&&str<='F') return str-'A'+10; return str-'0'; } void _2() { c = 0; for(int i=len-1;i>=0;--i){ int tmp = fun(s[i]); for(int j=0;j<4;j++){ num[c++] = ((tmp >>j)&1); } } while(!num[c-1]) { c--; } } void _8() { int i,c8=0; for(i=0;i+3<=c;i+=3){ n8[c8++]=num[i]*1+num[i+1]*2+num[i+2]*4; } if(i<c){ int tmp = 0,t=i; for(;i<c;++i){ tmp += num[i]*(1<<(i-t)); } n8[c8++] = tmp; } while(n8[c8-1]==0) { c8--; } for(i=c8-1;i>=0;--i){ printf("%d",n8[i]); } printf("\n"); } int main() { //freopen("input.txt","r",stdin); int m,i,j,k; scanf("%d",&n); while(n--) { scanf("%s",s); len = strlen(s); _2(); _8(); } return 0; }
基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define inf 0x3f3f3f3f #define T 1000010 typedef long long ll; char s[T]; int n,c,num[T],len; int fun(char str) { if(str>='A'&&str<='F') return str-'A'+10; return str-'0'; } void _2() { c = 0; for(int i=len-1;i>=0;--i){ int tmp = fun(s[i]); for(int j=0;j<4;j++){ num[c++] = ((tmp >>j)&1); } } while(!num[c-1]) { c--; } } void _10() { ll sum = 0; for(int i=c-1;i>=0;--i){ sum =sum*2 + num[i]; } printf("%lld\n",sum); } int main() { //freopen("input.txt","r",stdin); int m,i,j,k; while(~scanf("%s",s)) { len = strlen(s); _2(); _10(); } return 0; }
基础练习 十进制转十六进制
时间限制:1.0s 内存限制:512.0MB
问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
给出一个非负整数,将它表示成十六进制的形式。
输入格式
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
输出这个整数的16进制表示
样例输入
30
样例输出
1E
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define inf 0x3f3f3f3f #define T 1000010 typedef long long ll; char s[T]; int n,c,num[T],len; char fun(int x) { if(x>=10&&x<=15) return 'A'+x-10; return x+'0'; } void _2() { c = 0; while(n>0) { num[c++] = n&1; n >>=1; } } void _16() { int c16 = 0,i,tmp,t; for(i=0;i+4<=c;i+=4){ s[c16++] = fun(num[i]*1+num[i+1]*2+num[i+2]*4+num[i+3]*8); } if(i<c){ for(tmp=0,t=i;i<c;++i){ tmp += num[i]*pow(2.0,double(i-t)); } s[c16++] = fun(tmp); } for(i=c16-1;i>=0;--i){ printf("%c",s[i]); } printf("\n"); } int main() { //freopen("input.txt","r",stdin); int m,i,j,k; while(~scanf("%d",&n)) { if(n==0)printf("0\n"); else{ _2(); _16(); } } return 0; }
基础练习 十六进制转八进制
时间限制:1.0s 内存限制:512.0MB
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
[b]【提示[/b]】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
相关文章推荐
- C语言进制转换代码分享
- PHP中实现中文字符进制转换原理分析
- JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
- php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
- javascript parseInt() 函数的进制转换注意细节
- 进制转换算法原理(二进制 八进制 十进制 十六进制)
- Shell脚本中不同进制数据转换的例子(二进制、八进制、十六进制、base64)
- 使用JavaScript进行进制转换将字符串转换为十进制
- Javascript进制转换实例分析
- Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
- 十六进制转换八进制
- Javascript进制转换
- Java基础——进制转换
- C#生成短地址+任意进制转换
- 进制之间的转换
- 用栈实现任意进制转换
- 进制转换
- 二进制,十六进制,八进制 十进制的转换
- [HdOJ]2031 进制转换
- 九度 题目1026:又一版 A+B java