数组:查找O(1),插入删除O(n)
链表:查找O(n),插入删除O(1)
nxt[ i ] 是 i 点的下一个点
#include<cstdio> using namespace std; int dat[110],nxt[110]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) nxt[i]=i+1; nxt[n]=1; int now=0; for(int i=1;i<=n;i++) { for(int j=1;j<m;j++) { now=nxt[now]; } printf("%d ",nxt[now]); nxt[now]=nxt[nxt[now]]; } return 0; }