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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM