題目描述
有n只猴子,按順時針方向圍成一圈(開始時編號為1,2,……n),選大王。從第1號猴子開始報數1,2,3……,數到m號時該猴子退出到圈外,如此報數直到圈內只剩下乙隻猴子時,此猴便是大王。你的任務是從鍵盤讀入n,m,程式判斷輸出最後的大王是幾號?
輸入格式
輸入一行,n,m分別表示猴子數量和報的數輸出
輸出選出的大王
樣例輸入
5 3樣例輸出 4
program p4851;
var a,b,c,d,n,m:integer;
admin:array[1..10000] of integer;
begin
b:=0;
read(n,m);
for a:=1 to n do
admin[a]:=a;
b:=m;
for a:=1 to n-1 do
begin
admin[b]:=0;
while cn then
b:=b mod n;
if admin[b]>0
then c:=c+1;
end;c:=0;
end;
for a:=1 to n do if admin[a]>0 then writeln(a);
end.
約瑟夫問題(迴圈鍊錶)練習
約瑟夫問題是個著名的問題 n個人圍成一圈,第乙個人從1開始報數,報m的將被殺掉,下乙個人接著從1開始報。如此反覆,最後剩下乙個,求最後的勝利者。例如只有三個人,把他們叫做a b c,他們圍成一圈,從a開始報數,假設報2的人被殺掉。約瑟夫問題其實就乙個迴圈鍊錶問題 先建立節點類 public clas...
迴圈鍊錶練習 一 約瑟夫環
約瑟夫環問題,是乙個經典的迴圈鍊錶問題,題意是 已知 n 個人 分別用編號 1,2,3,n 表示 圍坐在一張圓桌周圍,從編號為 k 的人開始順時針報數,數到 m 的那個人出列 他的下乙個人又從 1 開始,還是順時針開始報數,數到 m 的那個人又出列 依次重複下去,直到圓桌上剩餘乙個人。如圖所示,假設...
迴圈鍊錶,雙向鍊錶
迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...