进制转换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 48438 Accepted Submission(s): 26600
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
/*
* 思路:
* 根据十进制数 n%r , n/r 可得出任何进制数便可解
*
* 步骤1:
* 建立2-16进制的对应关系表
*
* 步骤2:
* 判断传入进来的数值是否为负数,是的话需要输出负号
*
* 步骤3:
* 将十进制数分解并根据进制表录入到临时的字符数组中
*
* 步骤4:
* 由于是顺序存储,所以逆序输出便可
*/
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int n=cin.nextInt();
int r=cin.nextInt();
system(n,r);
System.out.println();
}
cin.close();
}
public static void system(int n,int r)
{
if(n<0)
{
System.out.print("-");
n=Math.abs(n);
}
char []arr={'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};
char []mark=new char[32];
int pos=0;
while(n!=0)
{
mark[pos++]=arr[n%r];
n/=r;
}
for(int i=pos-1;i>=0;--i)
System.out.print(mark[i]);
}
}
本文介绍了一种将十进制数转换为2到16进制数的算法,并提供了具体的Java实现代码。针对输入的任意32位整数和目标进制数(2≤R≤16且R≠10),程序能够正确地输出转换结果,适用于正数及负数的处理。
803

被折叠的 条评论
为什么被折叠?



