题目描述:
// 考场30分 开 long long AC
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define LL long long
inline void read(LL &x){
x=0; int f=1; char c=getchar();
while(c>'9'||c<'0'){ if(c=='-') f=-1; c=getchar(); }
while(c>='0'&&c<='9'){ x=x*10+c-'0'; c=getchar(); } x*=f;
}
LL pre[1000205];
int main(){
LL p,n,m,a1,a2,arf,bat,a3;
read(n),read(m),read(arf),read(bat),read(a1),read(a2);
p=n/2;
arf%=n,bat%=n;
pre[a1]=1,pre[a2]=2;
for(int i=3;i<=m;++i){
a3=(arf*a2+bat*a1)%n;
while(pre[a3]>=(i-p)&&pre[a3]!=0) ++a3,a3%=n;
pre[a3]=i;
printf("%d ",a3);
a1=a2,a2=a3;
}
return 0;
}
记录一下i这个值上次出现的位置在哪里,就是pre