题目描述
回文数是指数字从前往后读和从后往前读都相同的数字。
例如数字 12321 就是典型的回文数字。
现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B进制后,其 B 进制表示是回文数字。
输入格式
一个整数 B。
输出格式
每行包含两个在B 进制下表示的数字。
第一个表示满足平方值转化为 B进制后是回文数字那个数,第二个数表示第一个数的平方。
所有满足条件的数字按从小到大顺序依次输出。
这一题主要考:十进制转化成其他进制:短除法
在判断回文数时,我用到了
StringBuilder里面的方法---翻转函数 sb = sb.reverse();
要注意的是---当余数大于9时 要用英文字母来表示,所以写一个判断语句
if (temp>9){ str =(char)(65+(temp-10)) + str; }else str = temp+str;
以下是我的代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int b = sc.nextInt(); for (int i = 1; i < 300; i++) { String str = getString(b, i*i); String str1 = getString(b, i); StringBuilder sb = new StringBuilder(str); StringBuilder sb1 = new StringBuilder(str1); sb = sb.reverse(); String result = sb.toString(); String result1 = sb1.toString(); if (str.equals(result)){ System.out.println(result1 + " " + str); } } } private static String getString(int b, int i) { String str = ""; while (i>0){ int temp = i% b; if (temp>9){ str =(char)(65+(temp-10)) + str; }else str = temp+str; i = i/ b; } return str; } }