小遊戲game

【題目背景】
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.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章