POJ 2453 强大的位运算

这个是说 给你一个数 找出比他大的最小的一个数 满足二进制中1的个数和他相同

看到了一个人写的很强大的位运算代码

#include <stdio.h>
int main()
{
    int n,x;
    while(scanf("%d",&n),n)
    {
        x=n&-n;
        printf("%d\n",n+x+(n^n+x)/x/4);
    }
}

x呢 是最后一个1出现的
n+x 是从后往前第一个01转化为10
n^n+x/x/4就是把所有后面的1后移了

Orz阿Orz。。。。。。

posted on 2008-08-22 12:48 Victordu 阅读(798) 评论(1)  编辑 收藏 引用

评论

# re: POJ 2453 强大的位运算 2009-07-14 18:01 WinterLegend

好牛逼啊 ……
唉 ~ 可惜 NOI 不会出这样的题目  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(5)

随笔档案(46)

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜