回文数

一个正整数,如果交换高低位以后和原数相等,那么称这个数为回文数。比如 121121121,233223322332 都是回文数,13,456713,456713,4567 不是回文数。

任意一个正整数,如果其不是回文数,将该数交换高低位以后和原数相加得到一个新的数,如果新数不是回文数,重复这个变换,直到得到一个回文数为止。例如,575757 变换后得到 132(57+75)132(57 + 75)132(57+75),132132132 得到 363(132+231)363(132 + 231)363(132+231),363363363 是一个回文数。

曾经有数学家猜想:对于任意正整数,经过有限次上述变换以后,一定能得出一个回文数。至今这个猜想还没有被证明是对的。现在请你通过程序来验证。

输入格式

输入一行一个正整数 nnn。

输出格式

输出第一行一个正整数,表示得到一个回文数的最少变换次数。

接下来一行,输出变换过程,相邻的数之间用"--->"连接。输出格式可以参见样例。

保证最后生成的数在 int 范围内。

样例输入

349

样例输出

3
349--->1292--->4213--->7337
package 计蒜客;

import java.util.Scanner;

public class 回文数 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in);
        StringBuffer result=new StringBuffer();
        int n=scan.nextInt();
        int count=0;
        while(true){
            StringBuffer sb=new StringBuffer(n+"");
            StringBuffer sb1=new StringBuffer(n+"");
            sb1.reverse();
            if(sb.toString().equals(sb1.toString())){
                result.append(sb);
                break;
            }
            else{
                count++;
                result.append(n+"--->");
                n=n+Integer.parseInt(sb1.toString());
            }
        }
        System.out.println(count);
        System.out.println(result.toString());
    }

}

 

posted @ 2018-03-11 20:01  henu小白  阅读(361)  评论(0编辑  收藏  举报