杭電2031(進数変換)
1451 ワード
クリックして杭電2031を開く
10進数Nを入力し、R進数出力に変換します.
入力データは複数の試験例を含み、各試験例は2つの整数N(32ビット整数)とR(2<=R<=16,R<>10)を含む.
変換された数をテストインスタンスごとに出力し、出力ごとに1行を占めます.Rが10より大きい場合、対応する数値規則は16進数(例えば、10はAで表されるなど)を参照する.
Problem Description
10進数Nを入力し、R進数出力に変換します.
Input
入力データは複数の試験例を含み、各試験例は2つの整数N(32ビット整数)とR(2<=R<=16,R<>10)を含む.
Output
変換された数をテストインスタンスごとに出力し、出力ごとに1行を占めます.Rが10より大きい場合、対応する数値規則は16進数(例えば、10はAで表されるなど)を参照する.
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
コード実装:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char chs[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(sc.hasNext()){
int n = sc.nextInt();
int r = sc.nextInt();
boolean isNegative = false;
if(n<0){
n=-n;
isNegative = true;
}
String str = "";
while(n/r>0){
str = chs[n%r]+str;
n = n/r;
}
if(n%r!=0){
str = chs[n%r]+str;
}
if(isNegative){
str = "-" + str;
}
System.out.println(str);
}
}
}