Pagini recente » Cod sursa (job #2878975) | Cod sursa (job #2683604) | Cod sursa (job #2585410) | Cod sursa (job #1357212) | Cod sursa (job #1502310)
#include <cstdio>
#define N 10000005
using namespace std;
int n,a,b,c,k,nx[N],u[66000],p[66000],i,j,v[N],vv[N],nr,NR;
int main()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
v[0]=b;
for(i=1;i<n;++i) v[i]=(1LL*v[i-1]*a+b)%c;
for(NR=0;NR<2;++NR)
{
for(i=0;i<(1<<16);++i) p[i]=-1;
for(i=0;i<n;++i)
{
k=(v[i]>>(16*NR))%(1<<16);
if(p[k]==-1) p[k]=i, u[k]=i;
else nx[u[k]]=i, u[k]=i;
}
nr=-1;
for(i=0;i<(1<<16);++i)
if(p[i]!=-1)
{
for(j=p[i];u[i]!=j;j=nx[j])
vv[++nr]=v[j];
vv[++nr]=v[u[i]];
}
for(i=0;i<n;++i) v[i]=vv[i];
}
for(i=0;i<n;i+=10) printf("%d ",v[i]);
printf("\n");
return 0;
}