编写一个算法来判断一个数是不是“快乐数”
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。