有道编程题不会做 哪为大哥帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/26 04:24:24
对于一个自然数n,可以把它转换成对应的二进制数a[k] a[k-1] ..... a[1] a[0],其

中:n= ∑a * 2^i 而且 a=0 或1 (0=< i < k) , a[k]=1。如:10 转换为1010;5 转换为 101。

我们统计一下a[0]......a[k]这k+1 个数中的0 的个数和1 的个数。如果在这k+1 个数中,0 的个数比1

个数多,就称n为A类数。给定m,求1~m (包含1,m)中A类数的个数。
函数接口:int solve(int m)
例如:m=3 return 0

public class Test {
public static void main(String args[]) {
System.out.println(solve(5));
}

private static int solve(int m) {
int m1 = 0;
int m0 = 0;
String bin = Integer.toBinaryString(m);

char[] arr = bin.toCharArray();

for (int i = 0; i < arr.length; i++) {
if (arr[i] == '0') {
m0++;
} else {
m1++;
}
}

if (m1 > m0) {
return 0;
} else {
return 1;
}
}
}