@[_auto](/user/889733)
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[100000000];
int main(){
int n,m,p,q;
cin>>n>>m>>p>>q;
for(int i=1;i<=m;i++){
int x=((i*p+q)%n)+1;
int y=((i*q+p)%n)+1;
if(x>y) swap(x,y);
for(int j=x;j<=y;j++){
a[j]=i;
}
}
for(int i=1;i<=n;i++) cout<<a[i]<<endl;
return 0;
}
```
这样就有分了,还贴心的帮你[试了一下](https://www.luogu.com.cn/record/116673787),因为如果x>y那么则x到y的这个循环不会执行,还有这道题正解应该是用并查集来做的,不懂得话可以看一下题解,但是要先自己思考,真不会再去看题解,而且不要抄题解~~抄多了会棕名~~
by bk1212 @ 2023-07-20 22:37:29
@bk1212,谢谢
by _auto @ 2023-07-21 06:29:58