Josephus问题,谁能给完整代码啊?能在C++6.0上运行的.

来源:百度知道 编辑:UC知道 时间:2024/05/27 20:48:33
1世纪著名历史学家Josephus,在犹太人和古罗马人战争期间,和其他40名犹太反抗者陷入罗马人陷阱。他们决定宁死不做俘虏,于是围成1个圆圈(位置p[1]-p[41]),由某一人(位置p[1])开始顺时针杀死其下一人(位置p[2]),直到没人活下(p[41]将杀死p[1])。但Josephus迅速计算得出了一个可以不死位置。试计算其所在的位置。
推广给出当有n名反抗者时可以存活的位置的一个递归式。

#include <iostream.h>

void main()
{
int n=41, m=2, i, s=0;
for (i=2; i<=n; i++) s=(s+m)%i;
cout<<"The winner is "<<s+1;
}
当有n名反抗者时可以存活的位置的一个递归式x'=(x+k)%n,k=2%n
具体解释请参见
http://acm.hrbeu.edu.cn/forums/index.php?showtopic=305