首页 > 试题广场 >

快乐数

[编程题]快乐数
  • 热度指数:1383 时间限制: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
bool happynum(int n ) 
{
    int a[10];
    while (1) 
    {
        int count = 0;
        bool yes = false;
        for (int i = 0; i < 10; i++) 
        {
            a[i] = n % 10;
            if (a[i] == 0) count++;
            if (a[i] == 1) yes = true;
            n = n / 10;
        }
        if (count == 9) 
        {
            if (yes) return true;
            else return false;
        }
        n = 0;
        for (int i = 0; i < 10; i++) 
        {
            n += a[i] * a[i];
        }
    }
}

发表于 2022-10-11 21:46:09 回复(0)

问题信息

难度:
1条回答 1603浏览

热门推荐

通过挑战的用户

查看代码