http://poj.org/problem?id=2886
一下内容来自http://magicode.blog.sohu.com/120450550.html (以表示对原作者尊重)
这个题主要用到线段树的思想,每次推算出要出去的人在当前剩下的人中的排位,再用线段树求出其原来的编号,即可算出每次应该出去的人,该人得到的糖果数为f(p)(p为出去的顺序,f(p)为p约数的个数
其实当总人数n确定时,p的值和f(p)的值就确定了,p为小于等于n的最大反素数
新学一个反素数的概念
反素数n,1<=i<n,则f(i)<f(n),即在1-n中,n的约数最多
由于反素数个数不多,这个题可以打表,把1-500000之间的反素数先算出来
反素数有以下两个性质
性质一:一个反素数的质因子必然是从2开始连续的质数.
<
本文详细介绍了如何解决POJ 2886问题,即在约瑟夫游戏中找到最后一个被踢出的人。关键在于理解反素数的概念,它是小于等于n的数中约数最多的数。文章提供了反素数的性质、计算方法以及利用线段树模拟游戏过程来求解原始序号。同时,还给出了相关参考资料链接以供深入学习。
订阅专栏 解锁全文
219

被折叠的 条评论
为什么被折叠?



