LintCode Python 简单级题目 488.快乐数

题目描述:

写一个算法来判断一个数是不是"快乐数"。

一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。

样例

19 就是一个快乐数。

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

题目分析:

将数字n按位转化为列表,然后循环求元素的平方和,只至结果n==1 or n ==4;

建议百度快乐数的循环结构。

 

非快乐数总是进入下列重复数列中:
4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 
例如非快乐数8、14:
8 → 64 → 52 → 29 → 85 → 89 → 145 → 42 → 20 → 4

14 → 17 → 50 → 25 → 29 → 85 → 89 → 145 → 42 → 20 → 4

例如快乐数7:
7 → 49 → 97→ 130 → 10 → 1

在十进位下,100以内的快乐数有(OEIS中的数列A00770) :1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100。

源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
    # @param {int} n an integer
    # @return {boolean} true if this is a happy number or false
    def isHappy(self, n):
        # Write your code here
        if n is None: return False
         
        while n != 1 and n != 4:
            nums = list(str(n))
            n = 0
            for i in nums:
                n += int(i)**2
        # 循环结束,返回结果
        if n == 1: return True
        if n == 4: return False
posted @   刘冬丶  阅读(2487)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示