19 約瑟夫環2

2021-10-05 10:16:35 字數 1381 閱讀 4592

19 約瑟夫環2

問題描述 :

明明是一名公安局的談判專家,專門負責和綁匪談判。有一次,明明接到乙個特殊的任務,他趕到了案發現場,發現有k個綁匪綁架了k個人質,於是明明就開始和綁匪進行談判。綁匪提出了乙個非常特殊的要求,如果明明能夠回答出這個問題,那綁匪將釋放所有的人質;否則,綁匪就要撕票。 綁匪的問題是這樣:綁匪把人質和自己圍成乙個圈,把人質從1開始編號,一直編到k,然後綁匪自己從k+1開始編號,一直編到2k。現在從編號1開始,每次從其中選出第m個人(隔m-1選出乙個人)出列,然後綁匪要求明明選定這個m值,且m值要盡量的小,使得最先出列的k個人都是綁匪。 例如:有3個壞人和3個人質,他們排成一圈,其中編號1到3的為人質,編號4到6的為壞人,如下: 1、2、3、4、5、6; 明明要選定m=5時,能夠滿足綁匪的要求。因為: 第一輪,從1開始數,編號5出列,剩下的人為: 1、2、3、4、6; 第二輪,從6開始數,編號4出列,剩下的人為: 1、2、3、6; 第三輪,從6開始數,編號6出列,剩下的人為: 1、2、3; 這樣所有的綁匪都先出列,明明可以成功地救出所有的人質。 如果明明能夠找到這個m值,那麼所有的人質都想獲救,否則的話,後果不堪設想。明明意識到了問題的嚴重,這個問題對他來說十分地棘手。於是明明想到了你,你是一名程式設計專家,明明想讓你用程式來解這個問題,救出所有的人質。 明明的問題可以歸結為:假設有k個人質和k個綁匪圍成一圈。人質的編號從1到k,綁匪的編號從k+1到2k。從編號1開始,每次從其中選出第m個人(隔m-1選出一人)出列。希望求出m的最小值,使得最先出列的k個人都是綁匪,即都是編號從k+1到2k的人。

輸入說明 :

你寫的程式要求從標準輸入裝置中讀入測試資料作為你所寫程式的輸入資料。標準輸入裝置中有多組測試資料,每組測試資料僅一行,每組測試資料有乙個整數k(1≤k≤10),表示人質的人數和綁匪的人數。每組測試資料與其後一組測試資料之間沒有任何空行,第一組測試資料前面以及最後一組測試資料後面也都沒有任何空行。

輸出說明 :

對於每一組測試資料,你寫的程式要求計算出一組相應的運算結果,並將這一組運算結果作為你所寫程式的輸出資料依次寫入到標準輸出裝置中。每組運算結果為乙個整數m,即明明要選定的那個數。每組運算結果單獨形成一行資料,其行首和行尾都沒有任何空格,每組運算結果與其後一組運算結果之間沒有任何空行,第一組運算結果前面以及最後一組運算結果後面也都沒有任何空行。 注:通常,顯示屏為標準輸出裝置。

輸入範例 :12

35輸出範例 :27

5169

#includeint main()

; int copy[21]=;

while( scanf("%d",&k) != eof )

else

}if(i==k*2+1)

break;

} printf("%d\n",m);

} return 0;

}

19 約瑟夫環2

明明是一名公安局的談判專家,專門負責和綁匪談判。有一次,明明接到乙個特殊的任務,他趕到了案發現場,發現有k個綁匪綁架了k個人質,於是明明就開始和綁匪進行談判。綁匪提出了乙個非常特殊的要求,如果明明能夠回答出這個問題,那綁匪將釋放所有的人質 否則,綁匪就要撕票。綁匪的問題是這樣 綁匪把人質和自己圍成乙...

約瑟夫環問題2

題目描述 約瑟夫環問題的一種描述是 編號為1,2,n的n個人按照順時針方向圍坐一圈,每個人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新報數,如此下去...

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...