AcWing 1346. 回文平方
原题链接
简单
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Main {
static String bit = "0123456789ABCDEFGHIJ";
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int b = scanner.nextInt();
for (int i = 1; i < 300 ; i++) {
//获取平方对应的b进制字符串
String pow = getBdigit(i*i, b);
if(isSymmitric(pow)){ //如果对称
System.out.println(getBdigit(i, b) + " " + pow );
}
}
}
//获取x的b进制数字符串
private static String getBdigit(int x, int b){
LinkedList<Character> stack = new LinkedList<>();
while (x != 0){
stack.push(bit.charAt(x % b));
x = x /b;
}
StringBuilder stringBuilder = new StringBuilder();
while (!stack.isEmpty()){
stringBuilder.append(stack.pop());
}
return stringBuilder.toString();
}
//字符串是否对称
private static boolean isSymmitric(String s){
int l = 0;
int r = s.length() - 1;
while (l < r){
if(s.charAt(l) != s.charAt(r)){
return false;
}
l++;
r--;
}
return true;
}
}