天天去哪吃
思路:
模拟
#include<iostream> #include<queue> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; #define N 100009 int a[N*2],n,m,x,y; int t,last; bool vis[N]; int main() { scanf("%d%d",&n,&m); scanf("%d%d",&x,&y); scanf("%d%d",&a[1],&a[2]); last=n/2; for(int i=max(3-last,1);i<=2;i++) vis[a[i]]=1; for(int i=3;i<=m;i++) { t=(1LL*x*a[i-1]+1LL*y*a[i-2])%n; while(vis[t]) t++,t=t%n; a[i]=t; vis[t]=1; if(i>last) vis[a[i-last]]=0; } for(int i=3;i<=m;i++) printf("%d ",a[i]); return 0; }
样例