hihocoder:#1370 快乐数字

来源:互联网 发布:java applet程序 编辑:程序博客网 时间:2024/05/16 06:15
时间限制:1000ms
单点时限:1000ms
内存限制:256MB

描述

判断一个正整数是否是快乐数字?

如果一个数字能够通过有限次快乐变换成为1,则是快乐数字。

快乐变换是对一个数字的每一位的平方数求和。

例如:

对于68

68 => 62+82= 100

100 => 12 + 02 + 02 = 1

因此68是快乐数字

输入

每一行输入一个整数,代表n;如果n为-1,表示输入结束。(n <= 100000000)

输出

针对每组数据,输出是否是快乐数字 true/false

样例输入
68-1
样例输出
true

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------分割线----------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

题解:

         这个题目利用hashset 的内部不能有相同num就可以轻松解决,源代码

import java.util.*;class HappyNum {boolean isHappay(int num){HashSet<Integer> cache= new HashSet<Integer>();while(cache.add(num) && num!= 1){num= Result(num);}return num==1? true:false;}int Result(int num){int result= 0;while(num!= 0){result+= (num%10)*(num%10);num/= 10;}return result;}}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner s= new Scanner(System.in);int num= s.nextInt();HappyNum happy= new HappyNum();while(num!= -1){if(happy.isHappay(num))System.out.println("true");elseSystem.out.println("false");num= s.nextInt();}}}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

这是第一种解法,但是对于每一次的输入都会有重复计算的部分,题目给出的最大数字为10位也就是最大result结果不过 9^2+10=810,这样就可以制作一个 Hashmap将每次计算的result存起来并且赋一个boolean的值这样就会很快找到结果,这里不再累述


0 0
原创粉丝点击