POJ 1781 In Danger Joseph环 位运算解法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}


以上是关于POJ 1781 In Danger Joseph环 位运算解法的主要内容,如果未能解决你的问题,请参考以下文章

POJ1012 - Joseph

POJ 1012 Joseph

POJ 1012 Joseph

POJ 1012:Joseph

北大ACM(POJ1012-Joseph)

POJ 1012 Joseph(打表题)