AcWing 1346. 回文平方 Java
原题链接
简单
作者:
天乔巴夏丶
,
2021-01-14 01:11:16
,
所有人可见
,
阅读 309
import java.util.Scanner;
/**
* @author Summerday
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// k进制
int k = sc.nextInt();
// 1 - 300 枚举一下
for (int num = 1; num <= 300; num++) {
String res = base(num * num, k);
if (isValid(res)) {
System.out.println(base(num, k) + " " + res);
}
}
}
// 求num的k进制表示
private static String base(int num, int k) {
StringBuilder res = new StringBuilder();
while (num > 0) {
res.append(get(num % k));
num /= k;
}
return res.reverse().toString();
}
private static char get(int x) {
if (x <= 9) return (char) (x + '0');
return (char) (x - 10 + 'A');
}
// 判断是否为回文串
private static boolean isValid(String num) {
char[] chs = num.toCharArray();
int i = 0, j = chs.length - 1;
while (i < j) {
if (chs[i] != chs[j]) return false;
i++;
j--;
}
return true;
}
}