杭电acm P2031进制转换

进制转换

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 56616    Accepted Submission(s): 30860


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进制的数字。于是我们应该先来了解下进制转换的特点,从十进制转换为其他进制的方法是除几取余法:

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));

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值