3499 幸运数字
3499 幸运数字
⭐️难度:困难
🌟考点:2023、模拟、枚举、省赛
📖
📚
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int cnt = 0;for (long i = 1; ; i++) {if(cnt == 2023) break;if(check10(i) && check2(i) && check8(i) && check16(i)) {cnt ++;System.out.print(" cnt:" + cnt);System.out.println(" i:" + i);}}}// 十进制static boolean check10(long x){String num = "" + x;int sum = 0;for (int i = 0; i < num.length(); i++) {sum += (num.charAt(i) - '0');}
// System.out.println(" sum:"+sum);if(x % sum == 0) return true;else return false;}// 二进制static boolean check2(long x){String num = Long.toBinaryString(x);int sum = 0;for (int i = 0; i < num.length(); i++) {sum += (num.charAt(i) - '0');}
// System.out.println(" sum:"+sum);if(x % sum == 0) return true;else return false;}// 八进制static boolean check8(long x){String num = Long.toOctalString(x);int sum = 0;for (int i = 0; i < num.length(); i++) {sum += (num.charAt(i) - '0');}
// System.out.println(" sum:"+sum);if(x % sum == 0) return true;else return false;}// 十六进制static boolean check16(long x){String num = Long.toHexString(x);int sum = 0;for (int i = 0; i < num.length(); i++) {if(num.charAt(i) >= 'a' && num.charAt(i) <= 'f'){sum = sum + num.charAt(i) - 'a' + 10;}if(num.charAt(i) >= '0' && num.charAt(i) <= '9'){sum = sum + num.charAt(i) - '0';}}
// System.out.println(" sum:"+sum);if(x % sum == 0) return true;else return false;}
}
⭐️API:
Long.toBinaryString(x);
Long.toOctalString(x);
Long.toHexString(x);
除了16进制有点特别,因为10代表a,所以要取十进制数应该是
-'a'+10
简单的题目往往采用最朴素的做法