| 1234567891011121314151617181920 | 
							- func findIntegers(num int) int {
 
- 	f := make([]int, 31)
 
- 	f[0], f[1] = 1, 2
 
- 	for i := 2; i < 31; i++ {
 
- 		f[i] = f[i-2] + f[i-1]
 
- 	}
 
- 	cnt, pre := 0, 1
 
- 	for k := 30; 0 <= k; k-- { // The highest bit is the sign of int32.
 
- 		if (num>>uint(k))&1 == 1 {
 
- 			cnt += f[k]
 
- 			if pre == 1 {
 
- 				return cnt
 
- 			}
 
- 			pre = 1
 
- 		} else {
 
- 			pre = 0
 
- 		}
 
- 	}
 
- 	return cnt + 1 // Means num itself is also valid.
 
- }
 
 
  |