题目:
回文数是指数字从前往后读和从后往前读都相同的数字。 例如数字 12321就是典型的回文数字。 现在给定你一个整数 B,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B进制表示是回文数字。 只写思路
-
创建一个空的结果列表,用于存储所有符合条件的整数。
-
使用for循环遍历1到300之间的所有整数。
-
计算当前整数的平方,并将其转换为B进制表示。
-
创建一个检查回文数的函数,将B进制表示作为输入参数。
-
在检查回文数的函数中,将B进制表示转换为字符串,并反转该字符串。
-
在检查回文数的函数中,检查反转后的字符串是否与原始字符串相同。
-
如果反转后的字符串与原始字符串相同,则将当前整数添加到结果列表中。
-
在循环结束后,返回结果列表。
-
import java.util.Scanner; public class Main { static boolean a(String s){ char[] chars = s.toCharArray(); for (int i = 0 , j = chars.length-1; i <= j;i++,j-- ){ if (chars[i] != chars[j]) return false; } return true; } static String b(String s){ char[] chars = s.toCharArray(); int i = 0; for (char aChar : chars) { if(aChar>='a'&&aChar <='z'){ chars[i] = (char) (chars[i] - 32); } i++; } return String.valueOf(chars); } public static void main(String[] args) { int i = 1; Scanner sc = new Scanner(System.in); int m = sc.nextInt(); while (i<=300){ int n = i*i; String s = Integer.toString(n, m); if (a(s)){ System.out.println(b(Integer.toString(i, m)) +" "+b(s)); } i++; } } }
输入数据 1
10
Copy
输出数据 1
1 1 2 4 3 9 11 121 22 484 26 676 101 10201 111 12321 121 14641 202 40804 212 44944 264 69696
Copy
输入数据 2
12
Copy
输出数据 2
1 1 2 4 3 9 11 121 22 484 101 10201 111 12321 121 14641 12B 16661 131 16B61 202 40804 204 41414