【TOJ 1386】进制转换
程序员文章站
2022-03-30 09:59:20
Description 输入一个十进制数N,将它转换成R进制数输出。 Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16) Output 为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示, ......
Description
输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16)
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,11用B表示等等)。
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
#include <iostream> #include <algorithm> using namespace std; int main() { int n,r,t,a[101],i; while(scanf("%d%d",&n,&r)!=EOF) { if(n<0) { n=-n; //如果十进制数n是负数,看成正数 printf("-"); //再打印负号 } if(n==0) printf("0"); //如果十进制数是0,直接输出0 for(i=1;n>0;i++) //当n=0时跳出 { t=n%r; //t为十进制数除r进制数的余数 a[i]=t; //保存该余数 n=n/r; } for(i=i-1;i>=1;i--) //倒序输出 { if (a[i]==10) printf("A"); else if (a[i]==11) printf("B"); else if (a[i]==12) printf("C"); else if (a[i]==13) printf("D"); else if (a[i]==14) printf("E"); else if (a[i]==15) printf("F"); else printf("%d", a[i]); } printf("\n"); } return 0; }