码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1781 In Danger Joseph环 位运算解法

时间:2016-02-07 21:22:48      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:

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;
}


POJ 1781 In Danger Joseph环 位运算解法

标签:

原文地址:http://www.cnblogs.com/mengfanrong/p/5184814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!