进制转换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 56616 Accepted Submission(s): 30860
7 2 23 12 -4 3
111 1B -11
思路:题目的意思是给出一个十进制数n和r进制,将十进制数字n转化为r进制的数字。于是我们应该先来了解下进制转换的特点,从十进制转换为其他进制的方法是除几取余法:
eg: 7 2 7%2=1 7/2=3 3%2=1 3/2=1 1%2=1 1/2=0 结果是111
import java.util.Scanner;
public class P2031 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int r=sc.nextInt();
char a[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
if(r<2&&r>16){
break;
}
int p=0;
if(n<0){
n=-n;
p=-1;
}
int x,y,i=0;
String str[]=new String[100];
while(n>0){
x=n%r;
str[i]=a[x]+"";
i++;
n=n/r;
}
if(p==-1){
System.out.print("-");
}
for(int j=i-1;j>=0;j--){
System.out.print(str[j]);
}
System.out.println();
}
}
}
PS: java中有直接进行进制转换的函数:
//十进制转成十六进制:
Integer.toHexString(int i);
//十进制转成八进制
Integer.toOctalString(int i);
//十进制转成二进制
Integer.toBinaryString(int i);
//十六进制转成十进制
Integer.valueOf("FFFF",16).toString();
//十六进制转成二进制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六进制转成八进制
Integer.toOctalString(Integer.valueOf("FFFF",16));
//八进制转成十进制
Integer.valueOf("576",8).toString();
//八进制转成二进制
Integer.toBinaryString(Integer.valueOf("23",8));
//八进制转成十六进制
Integer.toHexString(Integer.valueOf("23",8));
//二进制转十进制
Integer.valueOf("0101",2).toString();
//二进制转八进制
Integer.toOctalString(Integer.parseInt("0101", 2));
//二进制转十六进制
Integer.toHexString(Integer.parseInt("0101", 2));
1320

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



