题目:

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

样例:

19 就是一个快乐数。
$1^2 + 9^2 = 82$
$8^2 + 2^2 = 68$
$6^2 + 8^2 = 100$
$1^2 + 0^2 + 0^2 = 1$$

思路:

非happy number在[2,6]这个区间

参考答案:

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
    /*   if(n < 0)    return false;
       if(n == 1)   return true;
       
       set<int> temp;
       temp.insert(n);
       int sum;
       
       while(true){
           sum = 0;
           while(n){
               sum += (n%10)*(n%10);
               n /= 10;
           }
           if(sum == 1){
               return true;
           }
           if(temp.find(sum) != temp.end()){
               return false;
           }
           
           n = sum;
           temp.insert(n);
       }
    }*/
    
    while(n > 6){
        int sum = 0;
        while(n){
            sum += (n%10) * (n%10);
            n /= 10;
        }
        n = sum;
    }
    if(n == 1){
        return true;
    }
    else return false;
}
};

wydong
40 声望5 粉丝

wyd


« 上一篇
x的n次幂
下一篇 »
x的平方根