Pagini recente » Cod sursa (job #101011) | Cod sursa (job #2397402) | Cod sursa (job #519015) | Cod sursa (job #2205626) | Cod sursa (job #1502288)
#include <cstdio>
#define N 10000005
using namespace std;
int n,a,b,c,k,nx[N],u[70],p[70],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<6;++NR)
{
for(i=0;i<(1<<6);++i) p[i]=u[i]=-1;
for(i=0;i<n;++i)
{
k=(v[i]>>(6*NR))%(1<<6);
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<<6);++i)
if(u[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;
}