蓝桥杯-第8天

59 篇文章 0 订阅
8 篇文章 0 订阅

蓝桥杯-第8天

题目(进制转换)

  • 用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出,十六进制表示成3位,八进制表示成4位,若不够前面补0。(不考虑输入不合法的情况)
  • 输入
      1D5
    输出
    (注意冒号后面有一个空格)
      Hex: 0x1D5
      Decimal: 469
      Octal: 0725

解法

  • 这里我们需要知道16进制如果转到10进制的,如果我们熟悉的话可以知道其实和2进制转10进制一样,我们可以这么想,16进制从右往左数,是 1 16 256 1\quad16\quad256 116256等等,只要知道了这个规律,其实这种多进制转换,中间进制就是10进制,通过10进制进行中间

  • public static void main(String[] args){
    		Scanner in = new Scanner(System.in);
    		String str = in.nextLine();
    		//先将16进制转化为10进制
    		int sum = 1;
    		int result = 0;
    		for(int i=str.length()-1;i>=0;i--){
    			if(str.charAt(i)>='A'){
    				result += (str.charAt(i)-'A'+10)*sum;
    				
    			}else{
    				result += (str.charAt(i)-'0')*sum;
    				//System.out.println(Integer.valueOf(str.charAt(i)));
    			}
    			sum = sum*16;
    		}
    		//System.out.print(result);
    		//计算八进制结果
    		String str1 = "";
    		int temp = result;
    		while(result!=0){
    			str1+=String.valueOf(result%8);
    			//System.out.println(result%8);
    			//System.out.println(String.valueOf(result%8));
    			
    			result = result/8;
    		}
    		while(str1.length()<4){
    			str1 +="0";
    		}
    		str1 = new StringBuilder(str1).reverse().toString();//转换8进制完成
    		//System.out.print(str1);
    		//这题目太奇怪了,为啥要16进制还要输出
    		String str2 = "";
    		while(temp!=0){
    			if(temp%16>=10){
    				str2+=String.valueOf((char)(temp%16-10+'A'));
    //				System.out.println((temp%16-10)+'A');
    			}else{
    				str2+=String.valueOf(temp%16);
    				}
    			temp = temp/16;
    		}
    		str2 = new StringBuilder(str2).reverse().toString();
    		System.out.print(str2);
    //		System.out.print(str2);
    	}
  • 时间复杂度 O ( n ) O(n) O(n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值