二进制数位之和与十进制数位之和相等
思路很简单,从1-n穷举遍历即可
import java.util.*;
public class Main{
//十进制数位之和
public static int f(int n){
int cnt=0;
while(n>0){
cnt+=n%10;
n/=10;
}
return cnt;
}
//二进制数位之和
public static int g(int n){
int cnt=0;
while(n>0){
cnt+=n&1;
n=n>>1;
}
return cnt;
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int cnt=0;
for(int i=1;i<=n;i++){
if(f(i)==g(i)){
cnt++;
}
}
System.out.println(cnt);
}
}
京公网安备 11010502036488号