2016年普级组模拟试题(10月20日) 小游戏game

来源:互联网 发布:淘宝介入了还能取消吗 编辑:程序博客网 时间:2024/06/01 10:02

Time Limit:10000MS Memory Limit:256000K
Total Submit:27 Accepted:19
Case Time Limit:1000MS

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

var
a:array[0..10000] of longint;
i,n,m,j,k,t,s,l,ans,b,n1:longint;
begin

readln(m);
readln(s);
readln(n);
readln(k);
t:=s;
ans:=m;
for i:=1 to m do
a[i]:=i;
for i:=1 to m-1 do
begin
if i mod 2=1 then begin
t:=t+n-1;
while t>ans do t:=t-ans;
write(a[t],’ ‘);
dec(ans);
for j:=t to ans do
a[j]:=a[j+1];
end;
if i mod 2=0 then begin
t:=t-k;
while t<1 do t:=t+ans;
write(a[t],’ ‘);
dec(ans);
for j:=t to m do
a[j]:=a[j+1];
end;
end;
write(a[1]);

end.

阅读全文
0 0
原创粉丝点击