• 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。

    源码:

    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
  • 相关阅读:
    预习原码补码
    C语言I作业12-学期总结
    C语言I博客作业11
    C语言I博客作业10
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I作业004
  • 原文地址:https://www.cnblogs.com/bozhou/p/6956324.html
Copyright © 2020-2023  润新知