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 and replace the number by the Sum of the squares of its digits, and repeat the process until the number equals 1 (where it would stay), or it loops Endl essly in a cycle which does not include 1. Those numbers for which this process ends in 1 is happy numbers.
Example:19 is a happy number
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
The problem is to determine whether to enter the loop, you can use the hash table to record the occurrence of the number, when again appear, then into the loop. Similar to the fraction to recurring decimal problem.
1 classSolution {2 Public:3 BOOLIshappy (intN) {4unordered_set<int>showed;5 if(n<1)6 {7 return false;8 }9 if(n==1)Ten { One return true; A } - ints; - while(true) the { -s=0; - while(n!=0) - { +s+= (n%Ten) * (n%Ten); -N/=Ten; + } A if(s==1) at { - return true; - } - Else if(Showed.find (s)! =showed.end ()) - { - return false; in } - Showed.insert (s); ton=s; + } - } the};
[Leetcode] Happy number