蓝桥杯 算法训练 ALGO-151 6-2递归求二进制表示位数

Posted C3Stones

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯 算法训练 ALGO-151 6-2递归求二进制表示位数相关的知识,希望对你有一定的参考价值。

算法训练 6-2递归求二进制表示位数  
时间限制:10.0s   内存限制:256.0MB
问题描述
  给定一个十进制整数,返回其对应的二进制数的位数。例如,输入十进制数9,其对应的二进制数是1001,因此位数是4。
样例输入
一个满足题目要求的输入范例。
9
样例输出
与上面的样例输入对应的输出。
技术分享
数据规模和约定
  输入数据中每一个数的范围。
  例:输入在int表示范围内。
 
题目解析:
  在 Java 的 Integer 类的方法中,有将十进制数转换为二进制、八进制和十六进制的三个方法。若参数为正整数,则将以 X 进制无符号整数形式返回一个整数参数的字符串表示形式,否则,无符号整数值为参数加上 2^32 。
  本题中直接调用 Integer 类的 toBinaryString() 方法,返回字符串后再调用 length() 方法,求得二进制表示位数。
 
补充:  十进制转十六进制:   Integer.toHexString(int i)
     十进制转八进制:      Integer.toOctalString(int i)
     十进制转二进制:      Integer.toBinaryString(int i)
 

     十六进制转十进制:   Integer.valueOf("FFFF",16).toString()
     八进制转十进制:      Integer.valueOf("123",8).toString()
     二进制转十进制:      Integer.valueOf("1001",2).toString()

 

示例代码:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sc = new Scanner(System.in);
 6         int n = sc.nextInt();
 7         
 8         //因为返回的是一个整数参数的字符串表示形式,所以利用length()方法求得字符串长度
 9         int len = Integer.toBinaryString(n).length();
10         
11         System.out.println(len);
12     }
13 }

 







以上是关于蓝桥杯 算法训练 ALGO-151 6-2递归求二进制表示位数的主要内容,如果未能解决你的问题,请参考以下文章

(蓝桥杯)试题 算法训练 递归输出数字三角形

未完待续Java蓝桥杯--算法训练典型问题的递归框架

蓝桥杯 算法训练 ALGO-150 6-1 递归求二项式系数值

ALGO-139_蓝桥杯_算法训练_s01串(递归)

蓝桥杯入门训练

蓝桥杯--算法训练 瓷砖铺放