【题目描述】
进制转换
【思路】
对一个数进行短除法,可以得到该数b进制下的表示方式。但是要注意b>10时,数字不够表示需借助字母来表示,下面的get(int n,int b)就是该作用。
import java.util.Scanner;
public class Main {
//b>10时,数字不够表示需借助字母来表示
public static char get(int n, int b) {
if( n < 10) return (char) ('0'+n);
else return (char) (n-10+'A');
}
public static String base(int n , int b) {
//短除法
StringBuffer num = new StringBuffer();
while(n!=0) {
num.append(get(n%b,b)) ;
n/=b ;
}
//反转之后才是该数在b进制下的表示
return num.reverse().toString();
}
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int b = reader.nextInt();
for(int i = 1; i <= 300; i++) {
String num = base(i*i,b);
if( check(num,b) ) {
String n = base(i,b);
System.out.println(n+" "+num);
}
}
}
private static boolean check(String num, int b) {
char c[] = num.toCharArray();
//回文数判断
for(int i = 0, j = c.length-1; i < j; i++, j--)
if(c[i]!=c[j]) return false;
return true;
}
}