作者kaichan (呈呈)
看板Python
标题Re: [问题]比大小求最小值
时间Tue Nov 5 22:28:44 2013
※ 引述《Anisno (Anisno)》之铭言:
: 我遇到一个问题,题目如下:给一个正整数,你必须找出遮罩M,满足L<M<U且N or M
: 运算後数字最大。
: 假如
: N=30951344
: L=201310
: U=3567891
: 求M=___
: 我的想法是把N、L、U皆转成二进为表示法,再对齐
: 试着使N or M起来皆是1。
: 对齐我可以,但是他的While root我不会写
: 请问大家会如何解题呢??
: 第一次发文,排版不好,请见谅。
请参考
http://ideone.com/VhssDq
直接用 bit 运算
先算出 N 中不为 1 的 bit 遮罩 n_mask
EDIT:
如果 n_mask 介於 L ~ U 之间,则 M = n_mask
否则 从 L ~ U 中取 m 找出 m & n_mask 为最大的值
此 m 即是 M
若有 bug 请告知,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.20.104.230
※ 编辑: kaichan 来自: 211.20.104.230 (11/05 22:46)