等你来挑战

awj3584 2014-01-04 02:32:26
如果一个数正着读和反着读一样大,则这个数叫做回文数,例如121是回文数,123454321是回文数。 现给定一个正整数x,输出一个回文数y,要求y > x,并且组成x的所有数字之和与组成y的所有数字之和相等,以及y > x。 x在10^1000以内,因为数字较大,我们用字符串作为输入和输出。 如果无解,请输出Impossible。如果有多个y,输出最小的那个。 例如: 输入919,输出14941 输入1,输出Impossible

java实现................
...全文
356 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yh90 2014-01-19
  • 打赏
  • 举报
回复
拜托,看看清楚题目好哇? "... x在10^1000以内,因为数字较大,我们用字符串作为输入和输出 ..." 1 <= x <= 10的1000次方,好不好? 10到1000,数字还算大么?还用的着字符串输入输出啊?
wdj_2011 2014-01-13
  • 打赏
  • 举报
回复
写了一下,能够实现其要求,不过代码量有点大,如下: import java.util.Scanner; public class PalindromicNumber { public static void main(String[] args) { int num = getScanner(); int target = num +1; String result = compare(num, target); System.out.println(result); } /** * @return 通过控制台输入整数,并验证是否符合要求 */ public static int getScanner(){ System.out.println("请输入给定的整数(10~1000):"); Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); System.out.println("number:" +number); if (number>1000) { return getScanner(); } return number; } /** * 根据一个传入的整数,按各个位数相加求和 * @param num 给定的数字 * @return 各个位数之和 */ public static int add(int num){ char[] chs = getChs(num); int sum = 0; for (int i = 0; i < chs.length; i++) { sum += Integer.valueOf(chs[i]+""); } return sum; } /** * 根据传入的整数,按位拆分成字节数组 * @param number * @return */ private static char[] getChs(int number){ String string = "" + number; char[] chs = new char[string.length()]; for (int i = 0; i < string.length(); i++) { chs[i] = string.charAt(i); } return chs; } /** * 根据传入的数字判断是否为回文数 * @param target * @return */ private static boolean isPalindromicNum(int target){ char[] chs = getChs(target); for (int i = 0; i < chs.length/2; i++) { if (chs[i] != chs[chs.length-1-i]) { return false; } } return true; } private static String compare(int num,int target){ if (num<10 )return "impossible"; int numSum = add(num); int targetSum = add(target); while(numSum != targetSum){ target ++; if (!isPalindromicNum(target)) { continue; } targetSum = add(target); } return "" + target; } }
coolbamboo2008 2014-01-06
  • 打赏
  • 举报
回复
引用 4 楼 awj3584 的回复:
引用 1 楼 coolbamboo2008 的回复:
楼主把面试题拿上来了吗
,没!这是csdn英雄会上的一道题;http://hero.csdn.net/home/index
呵呵,怪不得,英雄咱还不够格啊
awj3584 2014-01-06
  • 打赏
  • 举报
回复
引用 1 楼 coolbamboo2008 的回复:
楼主把面试题拿上来了吗
,没!这是csdn英雄会上的一道题;http://hero.csdn.net/home/index
  • 打赏
  • 举报
回复
http://blog.csdn.net/chenghui0317/article/details/17849385 今天抽时间看了一下,没有完全做出来。。哎,水平不行。。
  • 打赏
  • 举报
回复
这个有点复杂,做了两个小时没做出来,主要是数字拆分那一块,递归考虑不周全。。
coolbamboo2008 2014-01-04
  • 打赏
  • 举报
回复
楼主把面试题拿上来了吗

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧