根据查找的只是发现约瑟夫环是有规律的;清除隔壁编号的
人的总数:1——2——3——4——5——6——7——(对应下面的存活位置)
存活位置:1——1——3——1——3——5——7——
一号清除号,三号清除四号.....一圈后会发现,偶数位置的都被清除了。剩下的继续 ....
得到公式:X(总人数)=2^n+a;
Y(存活位置)=2a+1;
其中未知的就是n和a。需要求出来!(写的很简单)
#include <iostream>
using namespace std;
void f(unsigned int x )
{ int a;
int zan=2;//工具人
if(x>=4){
for(int i=1;i<=100;i++)
{
zan=zan*2;
if(zan>x)
{
break;};}
a=x-(zan/2);
int y;
y=2*a+1;
cout<<y;
}}
int main()
{ unsigned int x;
cin>>x;
while(0<x&&x<3)
{cout<<1;
break;
}
while(x==3)
{
cout<<3;
break;
}
f(x);
return main();
}