zoukankan      html  css  js  c++  java
  • Java语言实现palindrome(回文)

    Java语言实现palindrome(回文)

    设计题目
    Statement of the Problem
    We say that a number is a palindrom if it is the sane when read from left to right or
    from right to left. For example, the number 75457 is a palindrom.
    Of course, the property depends on the basis in which is number is represented. The
    number 17 is not a palindrom in base 10, but its representation in base 2 (10001) is a
    palindrom.
    The objective of this problem is to verify if a set of given numbers are palindroms in
    any basis from 2 to 16.
    Input Format
    Several integer numbers comprise the input. Each number 0 < n < 50000 is given in
    decimal basis in a separate line. The input ends with a zero.
    Output Format11
    Your program must print the message Number i is palindrom in basis where I is the
    given number, followed by the basis where the representation of the number is a
    palindrom. If the number is not a palindrom in any basis between 2 and 16, your
    program must print the message Number i is not palindrom.
    中文:
    我们说一个数字是回文,如果从左到右读或从右到左读时是正常的。例如,数字75457就是回文。
    当然,该属性取决于表示is number的基。数字17不是以10为基底的回文,但它以2为基底(10001)表示是回文
    这个问题的目的是验证-组给定的数字 否是从2到1 6的任意组回文
    输入格式.
    输入由几个整数组成。每个数字0 <n<50000在单独的一行中以十进制的形式给出。输入以零结束。
    输出格式
    您的程序必须打印消息编号i是回文的基础中是给定的数字,然后是数字的表示是回文的基础。如果数字不是在2到1 6之间的任何基础上的回文,您的程序必须打印消息编号i不是回文。

    Java:

    import java.util.Scanner;
    
    public class Palindrome {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		long n;
    		while((n = sc.nextLong()) != 0){           // 输入以零结束
    			long num;
    			boolean book = true;         
    			String str = null;
    			for(int i = 2;i <= 16;i++) {           // (2-16) 进制
    				num = decimalToMRadix(n, i);       // 将 n 转化成 i 进制
    				str = String.valueOf(num);         // 变成字符串形式
    				// 以 str 作为构造StringBuffer对象的参数,再反转后转化成字符串
    				String strreverse = new StringBuffer(str).reverse().toString();    
    				if(str.equals(strreverse)) {       // 判断是否是回文
    					book = false;                  // 是回文数字
    					System.out.println(n + " 是以 " + i + " 为基底的回文数字");
    				}
    			}
    			if(book)
    				System.out.println(n + " 不是回文数字");
    		}
    		sc.close();
    	}
    	public static long decimalToMRadix(long n, long m) {        // 将 n 十进制转化成 m(2-16) 进制
    		long mradix = 0, r = 0, t = 0;
    		while(n != 0) {
    			r = n % m;
    			n /= m;        // 改变 n 值
    			mradix += (long) (r * Math.pow(10, t));
    			t++;
    		}
    		return mradix;
    	}
    
    }
    /*Code Running Results
    17
    17 是以 2 为基底的回文数字
    17 是以 4 为基底的回文数字
    17 是以 16 为基底的回文数字
    59
    59 是以 4 为基底的回文数字
    59 是以 15 为基底的回文数字
    523
    523 是以 13 为基底的回文数字
    598
    598 是以 4 为基底的回文数字
    598 是以 15 为基底的回文数字
    0
    */
    
  • 相关阅读:
    最舒适的路线(并查集)
    POJ 2411 状态压缩DP
    NYOJ 708 ones
    HUD 1024 Max Sum Plus Plus
    最长上升子序列
    HDU 4717 The Moving Points
    重新开始写随笔
    读书的意义
    读《如何阅读一本书》笔记
    读《GRAY HAT PYTHON》笔记
  • 原文地址:https://www.cnblogs.com/jiaohuadehulike/p/14295005.html
Copyright © 2011-2022 走看看