首页 > 试题广场 >

快乐数

[编程题]快乐数
  • 热度指数:2033 时间限制: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
头像 君无颜
发表于 2022-03-21 23:27:59
不是快乐数的数称为不快乐数(unhappy number) 这个题首先要知道,所有不快乐数的数位平方和计算, 最後都会进入: 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中。 在十进位下,个位数的快乐数只有1和7. (100以内的快乐数有 :1, 7, 展开全文
头像 喜欢可抵岁月漫长
发表于 2023-11-23 20:10:20
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return 展开全文
头像 改变眼泪的理由
发表于 2023-07-02 15:20:58
//https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html //代码随想录中提到的快乐数。通过使用哈希表来检查中途的计算结果是否曾经出现过。如果出现过则代表进入无限循环了。 #include <unordered_set 展开全文
头像 爱唱歌的潜伏者在发呆
发表于 2024-02-26 12:39:44
class Solution { public://双指针 int happy(int x) { int sum=0; int m=0; while(x) { m=x%10; sum+=m*m; x=x/10; 展开全文
头像 unique琪殿
发表于 2023-07-24 10:51:51
解题要点: 通过列举可发现规律:所有不快乐数的数位平方和计算,最终都会进入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 → ··· 的循环中。 所以只要某轮转换结果sum为以上8个数字中的任意一个数字,都会进入循环,即可判断该数不是快乐数。代码实现 展开全文
头像 万千少男的梦
发表于 2024-05-21 00:55:38
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return bool布尔型 */ 展开全文
头像 学习生1
发表于 2024-12-03 20:37:24
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return bool布尔型 */ 展开全文
头像 baffalo
发表于 2022-05-20 11:32:16
/**  * @param n int整型   * @return bool布尔型  */ function happynum( n ) { // 简单模拟   展开全文
头像 牛客99414580号
发表于 2022-06-25 10:18:03
#include <stdbool.h> int change(int x) {     int sum = 0;     while(x  展开全文
头像 姐姐的遮阳伞
发表于 2022-04-05 19:40:01
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return 展开全文