# [leetcode] 202. Happy Number

Write an algorithm to determine if a number is "happy".

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example: 19 is a happy number

• 12 + 92 = 82
• 82 + 22 = 68
• 62 + 82 = 100
• 12 + 02 + 02 = 1

Credits:
Special thanks to @mithmatt and @ts for adding this problem and creating all test cases.

[Solution]

``` 1 bool isHappy(int n)
2     {
3         set<int> table;
4
5         table.insert(n);
6         while (1)
7         {
8             int k = 0;
9             while (n)
10             {
11                 k += (n % 10) * (n % 10);
12                 n /= 10;
13             }
14             if (k == 1)
15                 return true;
16             if (table.find(k) != table.end())
17                 return false;
18             n = k;
19             table.insert(n);
20         }
21     }```

[leetcode] 202. Happy Number

(0)
(0)

0条 © 2014 mamicode.com 版权所有 京ICP备13008772号-2