1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public: int rangeBitwiseAnd(int left, int right) { bitset<40> bil(left),bir(right); using ll=long long; if(right==0) return 0; ll MAX=floor(log2l(right)); ll ans=0; for(int i=MAX;i>=0;--i){ if(bil[i]!=bir[i]){ break; }else if(bil[i]){ ans+=(1ll<<i); } } return (int)ans; } };
|