【題目背景】
yk同學是一個灰常灰常有愛的同學,雖然各種老師總是讓他幹看似很無聊的事情,但是他總是發明一些好玩的辦法來完成這些無聊的任務,這樣yk就不會整天那麼憂鬱啦~ 這次,老師又給他佈置了一個任務,讓他搬凳子~~ 當然他非常有愛地把這個任務發展成了一個小小小遊戲~ hoho,現在他讓你來玩這個小遊戲,have a try~
【題目描述】
現在有M個凳子排成一個圈,我們順時針給凳子依次編號爲1,2,3……,M。我們從編號爲S的凳子開始,每次先順時針數N個凳子,將第N個凳子搬走,然後再逆時針數K個凳子,將第K個凳子搬走。每次都這樣先順時針數N個,再逆時針數K個,直到只剩1個凳子,直接搬走。最後,我們想知道M個凳子的搬走順序。
【輸入格式】
game.in
共4行,每行1個數,分別表示題目中的M,S,N,K。
【輸出格式】
game.out
僅一行,凳子搬走的序列,每個編號間有一個空格。
【樣例】
game.in
8
1
3
2
game.out
3 1 5 2 7 4 6 8
【數據範圍】
100% M<=1000
var
m,n,s,k,i,j,t,k1,n1,l:longint;
a:array[0..1001] of longint;
begin
read(m,s,n,k);
for i:=1 to m do
begin
a[i]:=i;
end;
t:=m;
j:=s;
//n1:=n;
//n1:=n1 mod t;
//j:=s+n;
//write(a[j],' ');
//for l:=j to t-1 do
//a[l]:=a[l+1];
for i:=1 to m-1 do
begin
if i mod 2 <> 0 then
begin
//dec(t);
n1:=n;
n1:=n1 mod t;
j:=j+n-1;
while j>t do j:=j-t;
write(a[j],' ');
dec(t);
for l:=j to t do
a[l]:=a[l+1];
end
else
begin
//dec(t);
k1:=k;
k1:=k1 mod t;
j:=j-k;
while j<1 do j:=j+t;
write(a[j],' ');
dec(t);
for l:=j to t do
a[l]:=a[l+1];
end;
end;
write(a[1]);
end.