小游戏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.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值