不知道它这个是怎么判题的,我也是这样输入一个求解一个,但是用下面的办法是可以ac的。 import java.util.Scanner; public class Main { public static void main(String args[]) { boolean[] B = new boolean[100000 + 1]; for (int i = 1; i < 100000 + 1; i++) { int binary =g(i); int ten = f(i); if (binary == ten) B[i] = true; } Scanner cin = new Scanner(System.in); int times = cin.nextInt(); for (int i = 0; i < times; i++) { int n = cin.nextInt(); int count = 0; for (int j = 1; j <= n; j++) {{ if (B[j]) count++; } } System.out.println(count); } } private static int f(int num){ String str = String.valueOf(num); int sum = 0; for(int i = str.length() - 1;i>=0;i--){ sum+=Integer.valueOf(str.charAt(i)+""); } return sum; } private static int g(int num){ String str = Integer.toBinaryString(num); int sum = 0; for(int i = 0;i<str.length();i++){ sum+=Integer.valueOf(str.charAt(i)+""); } return sum; } }
点赞 3

相关推荐

牛客网
牛客企业服务