約瑟夫環變形題
因爲第一次關第一個,所以可以轉化爲N-1個電廠,最後留下第12個電廠的問題
代碼如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x,y,i,j;
while(cin>>x&&x)
for(i=1;; ++i)
{
y=0;
//新環是由 (舊環中編號-最大報數值)%舊總人數 得到的
//所以逆推時可以由 (新環中的數字 +最大報數值)%舊總人數 取得
//即舊環中編號=(新環中編號+最大報數值)%舊總人數
for(j=2; j<x; j++)
y=(y+i)%j;
if(!(y-11))//因爲第一個記爲0,所以第12個記爲11
{
cout<<i<<endl;
break;
}
}
return 0;
}