HDOJ 1282 回文数猜想(回文串类)

Problem Description
一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。至今为止还不知道这个猜想是对还是错。现在请你编程序验证之。

Input
每行一个正整数。
特别说明:输入的数据保证中间结果小于2^31。

Output
对应每个输入,输出两行,一行是变换的次数,一行是变换的过程。

Sample Input
27228
37649

Sample Output
3
27228—>109500—>115401—>219912
2
37649—>132322—>355553

题意能看懂吧。。代码有注释。
基础题,实在没什么好解释的。

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n =sc.nextInt();
            String str = n+"";
            String strs = "";
            String strn=n+"";
            for(int i=str.length()-1;i>=0;i--){
                strs=strs+str.charAt(i);
            }
//          System.out.println(str);
//          System.out.println(strs);
            int n2=Integer.parseInt(strs);
            int time=0;
            while(!ishui(str)){
                //System.out.println(n);
                n=n+n2;
                str=""+n;
                strs="";//必须把strs赋为空
                for(int i=str.length()-1;i>=0;i--){
                    strs=strs+str.charAt(i);
                }
                n2=Integer.parseInt(strs);
                strn=strn+"--->"+str;
                time++;
            }
            System.out.println(time);
            System.out.println(strn);
        }
    }

    //判断str是不是回文串的函数
    private static boolean ishui(String str) {
        boolean isFalg = true;
        for(int i=0;i<str.length()/2;i++){
            if(str.charAt(i)!=str.charAt(str.length()-1-i)){
                return false;
            }
        }
        return true;
    }

}
时间: 2024-07-30 20:24:40

HDOJ 1282 回文数猜想(回文串类)的相关文章

Python计算回文数的方法_python

本文实例讲述了Python计算回文数的方法.分享给大家供大家参考.具体如下: 这里检查数字是不是回文数,用196算法生成一个数字的回文数 num = 905; def is_Palindrome(num): """ 判断一个数字是不是回文数,这里有些取巧了 :param num: :return: """ """ :param num: :return: """ temp = "

java-通过删改构成最长回文数问题

问题描述 通过删改构成最长回文数问题 给定一串数字,通过删除某些数字构成一个回文数,算法如何实现,最好使用java试实现.例 1234564321,删除5或者6,就构成了最长回文数. 解决方案 个人认为:首先要构成回文,是不是应该是一对称数组才行?如果是一个对称数组?就像例子一样.1234564321,length=10如果是123454321,length=9这个已经是回文了,所以长度是双数,我们可以将1234 56 4321中间的两个数(56)任意删去其一,就构成回文了.希望能够帮助你. 解

c语言-关于用【C语言】写——回文数——的代码【高级语言程序设计】

问题描述 关于用[C语言]写--回文数--的代码[高级语言程序设计] 问题:判定用户输入的正整数是否为"回文数". 回文数即121,232正面读反面读都相同的数, 运用c语言来编写一个程序代码. #include main() . . . 谢谢大神们了(>_<) 解决方案 http://blog.sina.com.cn/s/blog_5072a15d0100msdb.html 解决方案二: http://www.bianceng.cn/Programming/C/20140

c++-C++小白来提问,关于回文数

问题描述 C++小白来提问,关于回文数 编写回文数的代码中遇到这么一段 int i = 0; int j = 0; while ((i <= (int)strlen(str) / 2) && (j == 0)) { if (*(str + i) == *(str + (strlen(str) - i) - 1)) { i++; } else j = 1; } return j == 0 ? 1 : 0; 这段怎么理解啊,尤其是 if (*(str + i) == *(str + (s

javascript-js判断五位数为回文数

问题描述 js判断五位数为回文数 用求余的方法判断一个五位数是否为回文数,num/10000%10,求具体代码 解决方案 function isPlain(num){ var first = parseInt(num/10000); var last = num%10; if(first == last && parseInt((num - first*10000)/1000) == parseInt((num-last)/10)%10){ return true; }else{ retu

C语言中判断一个数是否是回文数

注:回文数即数字顺着和反着是同一个数! 看了郝斌老师的C语言视频,虽然还只看了80多个,但是还是有一些体会,编程应该养成良好的编程风格,至少到现 在为止写的这些小程序都应该有下面这样一个过程: 1,流程:(知道程序是按照怎样的顺序运行的) 2,功能:(理解程序的作用) 3,试数:(我个人简单的理解为测试过程,把自己当作计算机去执行程序) /* 2012年4月20日 10:36:23 判断一个数是否是回文数 */ #include <stdio.h> int main(void) { int v

求1O~1000之间的回文数

一个数是不是回文数,先将其数字分离,用一数组a存放,然后将相应数字进行比较.为此引入一标志变量flag,其值为1表示是回文数,为0表示不是回文数. 程序如下: /*程序8-1S,求lO~1000之间的回文数*/ main() {int i,X: int a[8],j: int b,e: int flag; for(i=10; i<1000l i++) {j=O:x=i;/*将数字分离,用一数组存放*/ while(x>O) {a[j]=x%10; x/=1O: j++: } flag=1:/*

PHP输出两个数字中间有多少个回文数的方法

 这篇文章主要介绍了PHP输出两个数字中间有多少个回文数的方法,实例分析了回文数的概念与相关判断技巧,需要的朋友可以参考下     本文实例讲述了PHP输出两个数字中间有多少个回文数的方法.分享给大家供大家参考.具体分析如下: "回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php for($i=10;$i<100;$i++

php找出指定范围内回文数且平方根也是回文数的方法

这篇文章主要介绍了php找出指定范围内回文数且平方根也是回文数的方法,实例分析了php判断回文的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php找出指定范围内回文数且平方根也是回文数的方法.分享给大家供大家参考.具体如下: 一.要求: 给出两个数值X和Y,统计在这个区间里的回文数,并且要求它们的平方根也是回文数.其中 1<= x <= y < 10 14 二.解决方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17