线段树,顺便给自己当线段树模板
#include<bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define N 200005
int tree[N*4][2];
int sum[N*4];
void push(int rt)
{
sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void build(int l,int r,int rt)
{
tree[rt][0]=l;
tree[rt][1]=r;
if(l==r)
{
sum[rt]=1;
return;
}
int m=(l+r)>>1;
build(lson);
build(rson);
push(rt);
}
int update(int s,int rt)
{
sum[rt]--;
if(tree[rt][0]==tree[rt][1])
{
sum[rt]=0;
return tree[rt][0];
}
if(s<=sum[rt<<1])
return update(s,rt<<1);
else return update(s-sum[rt<<1],rt<<1|1);
}
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
build(1,n,1);
int temp=1;
int pos;
for(int i=1;i<=n;i++)
{
temp=(temp+m-1)%sum[1];
if(temp==0) temp=sum[1];
pos=update(temp,1);
if(i<n)
cout<<pos<<" ";
else cout<<pos<<endl;
}
}
}