題目背景
約瑟夫是乙個無聊的人!!!
題目描述
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 ...