终章-剑之魂
題目
My soul of my sowrd!
終焉的試煉即將到來,作為一名有修養的劍士,雖然沒有習得n刀流但是二刀流還是沒問題的。然而我也是個劍的收藏者,家里屯著n把劍,每一把劍都有一個靈魂值a[i],由于一些劍之間可能有共鳴,所以我需要兩把契合度最高的劍。據劍圣所說,兩把編號為i,j劍的契合度為a[i] and a[j]。如何深得劍的靈魂呢?
注:AND 為按位與運算,先將數轉成二進制,不滿位數的補全0,然后成為兩個長度相同的二進制數,處理的時候,兩個相應的二進制位都為1,該位的結果值才為1,否則為0。
題意
給你n個數(n<=1000000),問你兩個數and的值最大是多少。
分析
一般見到位運算,我們可以先把它們分成一位一位來分析。
我們發現在這些數中好像我們沒有什么規律。
那么我們來考慮一下答案是怎樣確定的,
于是我們考慮答案的每一位,若這一位為1,那么必須有兩個數滿足:
1.ans前i-1位的有1的,這個數也必須要有(即ans and a[j]=ans)
2.第i位必須也是1(即a[i] and 2i?1 >0)
這樣我們便可以很好的解決問題了。
總結
- 上一篇: 房子装修选择自装,物业办装修手续,需要哪
- 下一篇: 字符串练习:手机号码屏蔽,身份证号码信息