华为编程题之二:回文数字猜想
来源:互联网 发布:手机视频放慢软件 编辑:程序博客网 时间:2024/06/06 08:28
回文数字猜想
给出一个数字N,如68,定义它的逆数为86,那么经过68+86=154,154+451=605,605+506=1111这样几次操作后,可以得到回文数字1111。现在需要判断经过7次操作是否可以得到回文,如果能,输出回文,如果不能输出0。
思路:拆分各个位数并逆序相加,对和数判断回文。
(数字与逆序相加,如果对应位置相加不产生进位,那么结果肯定是回文;产生进位的有可能是回文,如605+506)
代码:
import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;public class Palindrome{public static void main(String[] args)throws Exception{//1得到输入的数字;InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);String str = br.readLine();//2判断数字是否满足题意,满足输出数值否则输出0;if(isRight(str)){System.out.println(str);}else{System.out.println("0");}}public static boolean isRight(String str){String s = str;long value = Long.parseLong(s);//3得到数值逆数long sum = ReverseFunc(value);//4在7次计算中,满足则返回truefor(int i=0;i<7;i++){sum += value;long sumR = ReverseFunc(sum);if(sumR == sum ){return true;}value = sumR;}return false;}//5利用StringBuffer的reverse来计算数值的逆数public static long ReverseFunc(long sum){//5利用StringBuffer的reverse来计算数值的逆数String s = String.valueOf(sum);StringBuffer sb = new StringBuffer(s);StringBuffer sbReverse = sb.reverse();String strReverse = new String(sbReverse);long value = Long.parseLong(strReverse);return value;}}
0 0
- 华为编程题之二:回文数字猜想
- 编程之美----数字回文
- 读书笔记之编程之美 - 4.10 数字哑谜和回文
- 《编程之美》 Problem4_10 数字哑谜和回文
- 编程之美 数字哑谜和回文小程序
- 编程之美4.10 数字哑谜和回文
- 《编程之美》4.10数字哑谜和回文
- 编程之美-数字哑谜和回文方法整理
- 回文数字之差
- 挑战面试编程:回文串、回文数字
- 2012华为编程比赛之字符串数字字符排序
- Java笔试编程题之二 ----数字转换
- 编程之美:第四章 数字之趣 4.10数字哑谜和回文
- 编程之美:第四章 数字之趣 4.10_2数字哑谜和回文
- 华为上机练习题--判断某数字是否是回文数字
- 华为编程规范化 二
- java编程题:打印10000以内的回文数字
- 华为笔试题--是否回文
- Linux下搭建Android环境
- linux安装thrift
- Python3.4GUI Tkinter的使用
- YT14-HDU-找新朋友
- Codeforces 487A Fight the Monster(暴力)
- 华为编程题之二:回文数字猜想
- cat程序实现原理解释 C语言
- 如何用Eclipse连接MySQL数据库
- 【转】欢迎使用CSDN-markdown编辑器
- ubuntu skill
- 欢迎使用CSDN-markdown编辑器
- 【转载】Struts2中的OGNL详解
- servlet容器及其架构
- bootstrap 的 collapse 使用示例