小游戏game
Description
【題目背景】
yk同學是一個灰常灰常有愛的同學,雖然各種老師總是讓他干看似很無聊的事情,但是他總是發明一些好玩的辦法來完成這些無聊的任務,這樣yk就不會整天那么憂郁啦~ 這次,老師又給他布置了一個任務,讓他搬凳子~~ 當然他非常有愛地把這個任務發展成了一個小小小游戲~ hoho,現在他讓你來玩這個小游戲,have a try~
【題目描述】
現在有M個凳子排成一個圈,我們順時針給凳子依次編號為1,2,3……,M。我們從編號為S的凳子開始,每次先順時針數N個凳子,將第N個凳子搬走,然后再逆時針數K個凳子,將第K個凳子搬走。每次都這樣先順時針數N個,再逆時針數K個,直到只剩1個凳子,直接搬走。最后,我們想知道M個凳子的搬走順序。
Input
共4行,每行1個數,分別表示題目中的M,S,N,K。
Output
僅一行,凳子搬走的序列,每個編號間有一個空格。
Sample Input
8
1
3
2
Sample Output
3 1 5 2 7 4 6 8
Hint
【數據范圍】
100% M<=1000
分析
這就是一道模擬題,bz表示當前的狀態(順時針還是逆時針),t指向當前凳子的編號,s1表示當前狀態的數了的第幾個凳子。
程序:
var m,s,n,k,tj:longint; f:array[0..2000]of boolean;procedure init; beginreadln(m);readln(s);readln(n);readln(k);fillchar(f,sizeof(f),true);tj:=0; end;procedure main; var bz,t,s1:longint; beginbz:=1;t:=s-1;s1:=0;while tj<m dobeginif bz=1 thenbegininc(t);if t>m then t:=1;if f[t]=true then inc(s1);if s1=n thenbeginwrite(t,' ');bz:=2;s1:=0;f[t]:=false;inc(tj);end;end elseif bz=2 thenbegindec(t);if t<1 then t:=m;if f[t]=true then inc(s1);if s1=k thenbeginwrite(t,' ');bz:=1;s1:=0;f[t]:=false;inc(tj);end;end;end; end;begininit;main; end.轉載于:https://www.cnblogs.com/YYC-0304/p/9500075.html
總結
- 上一篇: 最少转弯问题
- 下一篇: 约数个数shlqsh