lintcode-【簡單題】快樂數


題目:

寫一個算法來判斷一個數是不是"快樂數"。

一個數是不是快樂是這么定義的:對於一個正整數,每一次將該數替換為他每個位置上的數字的平方和,然后重復這個過程直到這個數變為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

答案:

一個不是【快樂數】的數字在進行每個位置上的數字平方和計算時會得到4這個值。

代碼:

 1 class Solution {
 2     
 3 public:
 4     /**
 5      * @param n an integer
 6      * @return true if this is a happy number or false
 7      */
 8     bool isHappy(int n) {
 9         // Write your code here
10         int sum = n;
11         
12         while(true)
13         {
14             sum = numSum(sum);
15             if(sum == 4)
16             {
17                 break;
18             }
19             
20             if(sum == 1)
21             {
22                 return true;
23             }
24         }
25         
26         
27         return false;
28     }
29     
30     int numSum(int n)
31     {
32         int sum = 0;
33         int x;
34         while(n != 0)
35         {
36             x = n % 10;
37             n = n /10;
38             sum += x * x;
39         }
40         
41         return sum;
42     }
43 };
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM