回文数2

题目描述

小明最近对回文数比较感兴趣,所谓回文数,就是把一个数的数位反着写和原来的数相等,如若1234321就是一个回文数。小明发现如果对任选的一个正数n,不断加上把它反过来得到的数,经过若干步运算,有可能得到一个“回文数”,请你帮帮小明能否在指定步数m以内对指定正数生成一个回文数。如69经过4步可以变成一个回文数:

69 + 96 = 165

165 +561 = 726

726 + 627 = 1353

1353 + 3531 = 4884

输入

每一行第1个数是n(0<n<263),第2个数是m(0<m<105).

输出

如果n能在m步以内生成回文,则输出yes,否则输出,no

样例输入

67 1
69 5
69 3
11 1
99 1

样例输出

no
yes
no
yes
no

如何完成

我的解答

	import java.math.BigInteger;
	import java.util.Scanner;
	public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		
		while(sc.hasNext()){
			long temp=sc.nextLong();
			int times=sc.nextInt();	
			String str=temp+"";
			String s=js(str);
			
			int count=0;
			for(int i=0;i<times;i++) {
				str=js(str);
				if(pd(str)) {
					System.out.println("yes");
					break;
				}else {
					count++;
					continue;
				}
				
			}
			if(count==times) {
				System.out.println("no");
			}
		}		
	}
	
	public static boolean pd(String s){      //判断一个数是否为回文数
		String string=s;	
		for(int i=0;i<string.length()/2;i++){
			if(string.charAt(i)!=string.charAt(string.length()-i-1)){	
				return false;
			}
		}
		return true;
	}
	
	
	public static String fz(String s) {   	 //翻转一个字符串数字
		StringBuilder sb=new StringBuilder(s);
		return sb.reverse().toString();
	}
	
	public static String js(String s) {       //对字符串数字进行回文运算
		StringBuilder sb=new StringBuilder(s);
		String s1= sb.reverse().toString();
		return (new BigInteger(s1).add(new BigInteger(s))).toString();
	}
}

//本题的算法设计占用了较大内存,若有更加好的建议,欢迎优化!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值