这道题非常让人伤心,发两张图就知道为什么伤心了,不想写题解了
…真是一个悲伤的故事
#include<cstdio>
#include<iostream>
using namespace std;
int N,M,p,q,fa[1001000+10],a[1001000+10];
int find(int x){
if(!fa[x]||fa[x]==x) return fa[x]=x;
return fa[x]=find(fa[x]);
}
int main(){
scanf("%d%d%d%d",&N,&M,&p,&q);
for(int i=M;i>0;i--){
int l=((long long)i*p+q)%N+1,r=((long long)i*q+p)%N+1;
if(l>r) swap(l,r);
for(int j=find(l);j<=r;j=find(j))a[j]=i,fa[j]=j+1;
}
for(int i=1;i<=N;i++) printf("%d\n",a[i]);
return 0;
}