编写一个算法来判断一个数是不是“快乐数”

时间: 1ms        内存:128M

描述:

一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。后面有提示哟!!!

输入:

输入一个正整数N

输出:

如果该正整数满足快乐数的条件输出yes,否则输出false

示例输入:

19

示例输出:

yes
解释: 
1*1+9*9=82

8*8 + 2*2 = 68

6*6 + 8*8 = 100

1*1 + 0*0 + 0*0 = 1

提示:

参考答案(内存最优[1120]):

#include<stdio.h>
#include<string.h>
int Num(int x)
{
    int ret=0;
    while(x){
         ret+=(x%10)*(x%10);
        x/=10;
    }
    return ret;
}
bool isHappy(int n)
{
    if(n<=0)
        return false;
    while(n!=1)
    {
        n=Num(n);
        if(n==4)
            return false;
    }
    return true;
}
int main()
{
    int n;
    scanf("%d",&n);
        if(isHappy(n)==true)
            printf("yes");
        else
            printf("false");
    return 0;
}

参考答案(时间最优[3]):

#include<stdio.h>
#include<string.h>
int Num(int x)
{
    int ret=0;
    while(x){
         ret+=(x%10)*(x%10);
        x/=10;
    }
    return ret;
}
bool isHappy(int n)
{
    if(n<=0)
        return false;
    while(n!=1)
    {
        n=Num(n);
        if(n==4)
            return false;
    }
    return true;
}
int main()
{
    int n;
    scanf("%d",&n);
        if(isHappy(n)==true)
            printf("yes");
        else
            printf("false");
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。