二进制数位之和与十进制数位之和相等
思路很简单,从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);
    }
}