HDU 2031 进制转换
来源:互联网 发布:一战沙俄 知乎 编辑:程序博客网 时间:2024/06/07 02:17
http://acm.hdu.edu.cn/showproblem.php?pid=2031
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
解题思路:
1.进制转换参考二进制与十进制之间的转换,即相除法。
2.因为是倒着出结果的,所以先将除下来的每个余数放进数组里,然后从n-1到0输出。
3.9以上的数字在输出时判断一下,如果为10输出A,如果为11输出B。以此类推。
4.负数的问题:我是用了一个tag,原来tag=0,如果为负数,n=-n,并且tag=1,然后先判断tag是否为1,为1的话先输出一个负号。
代码:
#include<stdio.h>#define M 10int main(){ int N,R,a[M],i,j,tag; while(scanf("%d %d",&N,&R)!=EOF) { tag=0; i=0; if(N<0) { N=-N; tag=1; } while(N) { a[i++]=N%R; N=N/R; } if(tag==1) printf("-"); for(j=i-1;j>=0;j--) { if(a[j]<10) printf("%d",a[j]); if(a[j]==10) printf("A"); if(a[j]==11) printf("B"); if(a[j]==12) printf("C"); if(a[j]==13) printf("D"); if(a[j]==14) printf("E"); if(a[j]==15) printf("F"); } printf("\n"); }return 0;}
0 0
- HDU 2031 - 进制转换
- HDU 2031 进制转换
- Hdu 2031 - 进制转换
- HDU 2031 进制转换
- hdu 2031 进制转换
- hdu 2031 进制转换
- HDU 2031 进制转换
- HDU 2031 - 进制转换
- hdu-2031进制转换
- HDU 2031 进制转换
- HDU-2031-进制转换
- hdu 2031 进制转换
- [hdu 2031] 进制转换
- hdu 2031 进制转换
- hdu 2031 进制转换
- HDU 2031 进制转换
- hdu 2031 进制转换
- HDU 2031 进制转换
- AJAX知识
- 判断B是否为A的子结构
- ExtJS学习:MVC模式案例(四)
- 指针函数和函数指针的区别
- HDU 3501 Calculation 2(容斥原理、求[1,n - 1]中和n不互素的数字之和)
- HDU 2031 进制转换
- CentOS下安装中文支持及字体
- pta--树的同构
- Linux常用的命令
- 解决react-native 创建工程、init过程太慢的问题
- iOS中使用blend改变图片颜色
- 青年图摘0714!唯美背后
- Map输出方式二:foreach输出Map
- MySQL存储过程中的3种循环