洛谷 1996 約瑟夫問題(線性資料結構)

2022-09-18 01:30:15 字數 803 閱讀 3316

題目背景

約瑟夫是乙個無聊的人!!!

題目描述

n個人(n<=100)圍成一圈,從第乙個人開始報數,數到m的人出列,再由下乙個人重新從1開始報數,數到m的人再出圈,……依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.

輸入輸出格式

輸入格式:

n m輸出格式:

出圈的編號

輸入輸出樣例

輸入樣例#1:

10 3

輸出樣例#1:

3 6 9 2 7 1 8 5 10 4

運用公式dq:=(dq+m-1-1) mod (n-out)+1;(dp為上一次的位置,out為第幾次出圈),然後輸出a[dp]。最後將dp+1到n-out-1的數都向前移一位。

**如下:

var

a:array[1..10000] of longint;

n,m,out,i,dq:longint;

begin

readln(n,m);

out:=0;

dq:=1;

for i:=1

to n do

a[i]:=i;

while

outdo

begin

dq:=(dq+m-1-1) mod (n-out)+1;

write(a[dq],' ');

for i:=dq to n-out-1

do a[i]:=a[i+1];

inc(out);

end;

end.

洛谷P1996 約瑟夫問題

約瑟夫是乙個無聊的人!n個人 n 100 圍成一圈,從第乙個人開始報數,數到m的人出列,再由下乙個人重新從1開始報數,數到m的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.輸入格式 n m輸出格式 出圈的編號 輸入樣例 1 複製10 3 輸出樣例 1 複製3 6 9 2 7 1 8...

洛谷P1996 約瑟夫問題

約瑟夫是乙個無聊的人!n個人 n 100 圍成一圈,從第乙個人開始報數,數到m的人出列,再由下乙個人重新從1開始報數,數到m的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.n m出圈的編號 輸入 1 10 3輸出 1 3 6 9 2 7 1 8 5 10 4m,n 100 1 由於...

洛谷 約瑟夫問題(P1996,佇列)

n 個人圍成一圈,從第乙個人開始報數,數到 m 的人出列,再由下乙個人重新從 1 開始報數,數到 m 的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號。輸入格式 輸入兩個整數 n,m。輸出格式 輸出一行 n 個整數,按順序輸出每個出圈人的編號。輸入輸出樣例 輸入10 3 輸出3 6 ...