(HDOJ2031)进制转换
2013-04-09 23:00
267 查看
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
[align=left]Input[/align]
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
[align=left]Output[/align]
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
[align=left]Sample Input[/align]
7 2
23 12
-4 3
[align=left]Sample Output[/align]
111
1B
-11
输入一个十进制数N,将它转换成R进制数输出。
[align=left]Input[/align]
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
[align=left]Output[/align]
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
[align=left]Sample Input[/align]
7 2
23 12
-4 3
[align=left]Sample Output[/align]
111
1B
-11
#include <stdio.h> #include <math.h> #include <string.h> #include <ctype.h> int a[1000]; int absplus(int n) { return n>0?n:(-n); } void print(int a[],int n) { int i; for(i=n; i>=0; i--) { if(a[i]<10) { printf("%d",a[i]); } else { switch(a[i]%10) { case 0:printf("A");break; case 1:printf("B");break; case 2:printf("C");break; case 3:printf("D");break; case 4:printf("E");break; case 5:printf("F");break; } } } } void convert(int n, int R) { int i=0,p,j; int t; t=n; n=absplus(n); a[0]=n%R; p=n/R; while(p>=R) { a[++i]=p%R; p=p/R; } a[++i]=p; if(t>0) { print(a,i); } else { printf("-"); print(a,i); } printf("\n"); } int main() { int N,R; while(scanf("%d%d",&N,&R)!=EOF) { if((N==1) || (N==0)) printf("%d\n",N); else convert(N,R); } return 0; }
相关文章推荐
- HDOJ2031 进制转换
- hdoj 2031 进制转换
- 进制转换 hdoj-2031
- [热身题][hdoj_2031]进制转换
- HDOJ 2031 进制转换
- HDOJ 2031 进制转换
- hdoj-2031-进制转换
- HDOJ 2031 进制转换
- 【hdoj2031】进制转换(10进制转换为2—16进制)
- hdoj 2031 进制转换
- hdoj2031 任意进制转换
- 进制转换 hdoj-2031
- 进制转换-HDOJ2031
- hdoj_2031 进制转换
- HDOJ 2031 进制转换
- hdoj 2031 进制转换
- hdoj 2031 进制转换
- 【HDOJ】2031 任意进制转换
- [HdOJ]2031 进制转换
- 进制转换-HDOJ2031