HDU4321(位运算二进制1的统计)
生活随笔
收集整理的這篇文章主要介紹了
HDU4321(位运算二进制1的统计)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:Arcane Numbers 2
?
題意:給定a和b,n,讓你求b+a, b+2*a, .......b+n*a里面有多少1.
?
當統計第K位的時候 可以注意到 第 B+T*A 和 B+(T+2^(K+1))*A 位是相同的
那么 第K位的時候 只需要統計2^(K + 1) ?- 1次就可以了
當統計第K位的時候 可以注意到 連續的 (2^K)/A都是連續的0 或者連續的1 所以可以考慮直接連續記錄(2^K)/A個結果。
那么 第K位的時候 只需要統計N / ((2^K)/A)次就可以了
那么 第K位的時候 只需要統計 2^K/((2^K)/A) 復雜度 變為O(A)
?
總結
以上是生活随笔為你收集整理的HDU4321(位运算二进制1的统计)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数开方(Java版)
- 下一篇: (HDU4324)判断一个图中是否存在两