SRM519 Div1 Easy(250), Div2 Hard(900) BinaryCards
AとBのビットが異なる最左の位置をkとすると、kビット目より左側を返すことはなく、kビット目と右側は全て表になりうる。
class BinaryCards{public: long long largestNumber( long long A, long long B ) { for ( unsigned long long i=1ull<<63; i!=0; i>>=1 ) if ( (A&i) != (B&i) ) return A | ((i<<1)-1); return A; }};