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
笨方法 把算好的記錄下來 每次去記 但是這樣浪費時間
事實上 會循環的數字是固定得
https://leetcode.com/discuss/79442/hashset-time-check-whether-the-loop-with-mathematical-proof
事實上 會循環的數字是固定得
https://leetcode.com/discuss/79442/hashset-time-check-whether-the-loop-with-mathematical-proof
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | bool isHappy(int n) { int *done=malloc(sizeof(int)*128); int size=0,happy=n; while(happy!=1){ done[size++]=happy; for(int i=0;i<size-1;i++)if(done[i]==happy)return false; int temp=0; while(happy/10){ temp+= pow(happy%10,2); happy/=10; } temp+=pow(happy%10,2); happy=temp; } return true; } |
沒有留言:
張貼留言