题目:
代码:
class Solution {
public:
int fib(int n) {
if (n <= 0) return 1;
if (n == 1) return 2;
int a = 1;
int b = 2;
int c = 3;
int i = n - 2;
while(i--) {
a = b;
b = c;
c = a + b;
}
return c;
}
int findIntegers(int num) {
if (num == 0) return 1;
if (num == 1) return 2;
int nbits = 0;
while(num>>nbits) {
++nbits;
}
if (num>>(nbits - 2) == 3) {
return fib(nbits);
} else {
int mask = (1 << (nbits - 1)) - 1;
return fib(nbits - 1) + findIntegers(num & mask);
}
}
};
额外结论: