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