求n以内自守数个数


实现代码:
方法一:
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int count = 0;for (int i = 0; i <= n; i++) {if (isAutomorphic(i)) {count++;}}System.out.println(count);scanner.close();}private static boolean isAutomorphic(int num) {long square = (long) num * num;int temp = num;int digits = 0;// 计算 num 的位数while (temp > 0) {digits++;temp /= 10;}// 特殊情况:0 是自守数if (num == 0) {return true;}// 比较平方的最后 digits 位是否等于 numlong mod = 1;for (int i = 0; i < digits; i++) {mod *= 10;}return square % mod == num;}
方法二:
public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int count = 0;for (int i = 0; i <= n; i++) {long square = (long) i * i;String strI = String.valueOf(i);String strSquare = String.valueOf(square);if (strSquare.endsWith(strI)) {count++;}}System.out.println(count);}
