正の整数nが与えられ、n以下の非負の整数が見つかり、そのバイナリ表現は連続的な整数を含まない.
本題はleetcode 600に由来するhttps://leetcode.com/problems/non-negative-integers-without-consecutive-ones/discuss/
=----------------------------------------------------------------------
構想:ダイナミックプランニング用フィボナッチ数列
コード:
=----------------------------------------------------------------------
構想:ダイナミックプランニング用フィボナッチ数列
コード:
int findIntegers(int num) {
vector dp(32,0);
dp[0] = 1;
dp[1] = 2;
for(int i = 2; i < 32;i++){
dp[i] = dp[i - 1] + dp[i - 2];
}
int res = 0;
int pre_bit = 0;
int k = 30;
while(k >= 0){
if(num & (1 << k)){
res += dp[k];
if(pre_bit)
return res;
pre_bit = 1;
}
else
pre_bit = 0;
k--;
}
return res + 1;
}