歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java程序練習-回文平方數

Java程序練習-回文平方數

日期:2017/3/1 11:16:45   编辑:Linux編程

描述
回文數是指從左向右念和從右向左念都一樣的數。如12321就是一個典型的回文數。

給定一個進制B(2<=B<=20,由十進制表示),輸出所有的大於等於1小於等於300(十進制下)且它的平方用B進制表示時是回文數的數。用’A’,’B’……表示10,11等等。
輸入
共一行,一個單獨的整數B(B用十進制表示)。

輸出
每行兩個B進制的符合要求的數字,第二個數是第一個數的平方,且第二個數是回文數。

樣例輸入
10

樣例輸出
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696

參考代碼

  1. import java.util.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner cin = new Scanner(System.in);
  5. int T = cin.nextInt();
  6. print(T);
  7. }
  8. private static void print(int t) {
  9. for(int i = 1;i <= 300;++ i){
  10. int s = i * i;
  11. StringBuffer num = new StringBuffer();
  12. StringBuffer square = new StringBuffer();
  13. num = convert(i,t);
  14. square = convert(s,t);
  15. //System.out.print(square);
  16. if(ispalindrom(square)){
  17. System.out.println(num.reverse()+" "+square);
  18. }
  19. }
  20. }
  21. private static StringBuffer convert(int s, int t) {
  22. StringBuffer rtnval = new StringBuffer();
  23. int digit;
  24. while(s > 0){
  25. digit = s % t;
  26. if(digit >= 10){
  27. rtnval.append((char)('A'+digit - 10));
  28. }else{
  29. rtnval.append(digit);
  30. }
  31. s /= t;
  32. }
  33. return rtnval;
  34. }
  35. private static boolean ispalindrom(StringBuffer bf) {
  36. String s = new String(bf);
  37. char sch[] = s.toCharArray();
  38. int len = sch.length;
  39. //System.out.println(" "+len);
  40. for(int i = 0;i < len / 2;++ i){
  41. if(sch[i] != sch[len - i - 1]){
  42. return false;
  43. }
  44. }
  45. return true;
  46. }
  47. }
Copyright © Linux教程網 All Rights Reserved