POJ 1781 In Danger Joseph环 位运算解法

Joseph环,这次模固定是2.如果不是固定模2,那么一般时间效率是O(n),但是这次因为固定模2,那么可以利用2的特殊性,把时间效率提高到O(1)。

规律可以看下图:


具体详细解析请看大师Knuth的Concrete mathematics。


补上纯粹利用位运算写的程序:

作者:靖心 http://blog.csdn.net/kenden23/article/details/30232645

int substraHighBit(int y)
{
	int x = y;
	x = x | (x>>1);
	x = x | (x>>2);
	x = x | (x>>4);
	x = x | (x>>8);
	x = x | (x>>16);
	return y & (x >> 1);
}

#include <cstdio>
int main()
{
	int xy, z;
	char e;
	while (scanf("%d %c %d", &xy, &e, &z) && xy)
	{
		while (z--) xy = (xy << 3) + (xy << 1);
		printf("%d\n", substraHighBit(xy) << 1 | 1);
	}
	return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值