生成回文数

2019-12-31 267次浏览 已收录 7个评论

所谓回文数就是左右对称的数字,比如:
585,5885,123321…
当然,单个的数字也可以算作是对称的。

小明发现了一种生成回文数的方法:
比如,取数字19,把它与自己的翻转数相加:
19 + 91 = 110,如果不是回文数,就再进行这个过程:
110 + 011 = 121 这次是回文数了。

200以内的数字中,绝大多数都可以在30步以内变成回文数,只有一个数字很特殊,就算迭代了1000次,它还是顽固地拒绝回文

注意: 这个题会错的唯一原因就是类型转换会造成存储长度的异常. 所以我使用的是BigInteger

package six_jue;
 
import java.math.BigInteger;
 
public class 生成回文树 {
	static int ij;
	static void dg(BigInteger i,int count) {
		String s=String.valueOf(i);
		String h="";
		String q="";
		for(int j=s.length()/2-1;j>=0;j--) {
			q+=s.charAt(j)+"";
		}
		int len=s.length()/2+(s.length()%2==0?0:1);
		//偶奇数截取子串
		h=s.substring(len);
		if(h.equals(q))
			return;
		if(count>30) {
			System.out.println(ij);
			return;
		}
			String f="";
			//反转字符串
			for(int k=s.length()-1;k>=0;k--) {
				f+=s.charAt(k);
			}
			//原字符串与反转字符串相加
			BigInteger sum=new BigInteger(f).add(i);
			dg(sum,++count);
		}
public static void main(String[] args) {
for(ij=10;ij<=200;ij++) {
	dg(BigInteger.valueOf(ij),0);
}
}
}
 

渣渣龙, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:生成回文数
喜欢 (0)

您必须 登录 才能发表评论!

(7)个小伙伴在吐槽
  1. 以后多发点哦
    靓妹2020-03-27 13:00
  2. 我也是小白以后多多交流
    中国加油小子2020-03-27 13:25
  3. 我也是学计算机的
    我也是渣渣2020-03-27 13:51
  4. good厉害了
    小蚯蚓2020-03-28 16:41
  5. 我给你点赞了
    靓妹2020-03-28 17:06
  6. good厉害了
    我是你哥2020-03-28 17:57
  7. 还可以
    笨鸟先飞2020-05-26 10:07