快乐树

来源:互联网 发布:502 bad gateway nginx 编辑:程序博客网 时间:2024/06/11 08:30

题目:

写一个算法来判断一个数是不是"快乐数"。

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

样例

19 就是一个快乐数。

1^2 + 9^2 = 828^2 + 2^2 = 686^2 + 8^2 = 1001^2 + 0^2 + 0^2 = 1
思路:

每次计算新数之后,如果是4直接跳出,是一也说明正确,否则继续循环。

代码:

class Solution {
public:
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    bool isHappy(int n) {
        // Write your code here
        while(1)
        { int sum=0,x;
          while(n!=0)
          {  x=n%10;
             n=n/10;
             sum=sum+x*x;
          }
          n=sum;
          if(sum==4)
             break;
          if(sum==1)
             return true;
        }
        return false;
    }
    //int numsum(int )
};

感想:

这道题就是如何判断它不是快乐树,这个条件难找,有了这个条件,题就不难了。