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