202.ハッピーカウント(Python)

1433 ワード

タイトル
難易度:★☆☆☆☆タイプ:数学
アルゴリズムを作成して、1つの数が「快楽数」であるかどうかを判断します.
「快楽数」は、正の整数に対して、その数を各位置の数値の二乗和に置き換えるたびに、この数が1になるまで繰り返し、無限ループである可能性がありますが、常に1にならないまで繰り返します.1に変えることができれば、この数が快楽数です.

入力:19出力:true解釈:1^2+9^2=82 8^2+2^2=68 6^2+8^2=100 1^2+0^2+0^2+0^2=1
に答える
この問題は簡単で、定義に基づいて符号化すればいいので、各平方和を求めるサブ関数get_を構築しました.bit_square(n)は、入力された数字の各ビットの平方和を返し、各出力の各ビットの平方和を繰り返し計算し、1が現れると入力された数字はハッピー数であり、また、すでに現れた各ビットの平方和を一時リストsqで記録し、各計算された各ビットの平方和がリストに現れたかどうかを確認し、現れた場合、その後の計算はループしていき,各平方和が1の結果は得られず,快楽数ではない.
class Solution(object):
    def isHappy(self, n):
        """
        :type n: int
        :rtype: bool
        """
        def get_bit_square(n):
            """
                   
            :param n: 
            :return: 
            """
            s = 0
            while n:
                r, n = n % 10, n // 10
                s += pow(r, 2)
            return s

        sq = []                             #              
        while True:                         #    
            if n == 1:                      #           1,     
                return True

            n = get_bit_square(n)           #           
            if n in sq:                     #                 
                return False                #            ,     
            sq.append(n)                    #           

質問やアドバイスがあれば、コメントエリアへようこそ~