首页 > 试题广场 >

快乐数

[编程题]快乐数
  • 热度指数:1390 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个正整数,请你判断这个数是不是快乐数。
快乐数:对于一个正整数,每次把他替换为他每个位置上的数字的平方和,如果这个数能变为 1 则是快乐数,如果不可能变成 1 则不是快乐数。
例如:正整数 19
转换过程为 1*1+9*9=82 , 8*8+2*2=68,6*6+8*8=100,1*1+0*0+0*0=1 ,所以他是快乐数。

数据范围:输入的正整数满足
示例1

输入

19

输出

true
示例2

输入

111

输出

false
# -*- coding: utf-8 -*-

# coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return bool布尔型
#
class Solution:
    """
    题目:
        https://www.nowcoder.com/practice/293b9ddd48444fa493dd17da0feb192d?tpId=196&tqId=40522&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D196&difficulty=undefined&judgeStatus=3&tags=&title=
    算法:
        模拟法
    复杂度:
        时间复杂度:O(M), M为总的循环次数
        空间复杂度:O(1)
    """

    def happynum(self, n):
        # write code here
        while n >= 10:
            num, n = n, 0
            while num:
                n += (num % 10) ** 2
                num /= 10

        return n == 1


if __name__ == "__main__":
    sol = Solution()

    # n = 19

    n = 111

    res = sol.happynum(n)

    print res

发表于 2022-06-26 20:19:46 回复(0)