算法简介
这是一种入门级的算法,它是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。
题目链接
题意
给出一个(0, 50000)内的整数,求该数在[2,16]进制下分别是否为回文数
解法
枚举[2,16]进制,每次都把数字转化成该进制下的字符串,然后判断是否为回文数,最后按格式输出结果
核心代码
int n = in.nextInt();
List<Integer> fixedBaseList = new ArrayList<>();
for (int radix = 2; radix <= 16; ++radix) {
String str = Integer.toString(n, radix);
String revStr = new StringBuilder(str).reverse().toString();
if (str.equals(revStr)) {
fixedBaseList.add(radix);
}
}