首页 > 学院 > 开发设计 > 正文

P1996 约瑟夫问题

2019-11-10 20:26:37
字体:
来源:转载
供稿:网友

题目描述

n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

样例输入

10 3

样例输出

3 6 9 2 7 1 8 5 10 4

思路

O(nm)还在冥思苦想要模拟的小伙伴们要哭了,这道题早已有公式啦~~~但是这道题不能直接输出最后那个人,要输出顺序=_=。var a:array[1..100] of longint; n,m,p,i,j:longint;begin readln(n,m); for i:=1 to n-1 do a[i]:=i+1; a[n]:=1; p:=n; for i:=1 to n do begin for j:=1 to m-1 do p:=a[p]; write(a[p],' '); a[p]:=a[a[p]]; end;end.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表