Pagini recente » Cod sursa (job #1701310) | Cod sursa (job #712070) | Cod sursa (job #965317) | Cod sursa (job #1138089) | Cod sursa (job #1427825)
#include<cstdio>
int n,v[10000001],i,*t,r,a,b,c;
void C(int u[],int w[],int b) {
int c[256]={0},x[256],i;
for(i=0;i<n;i++)
c[(u[i]>>(b*8))&(0xFF)]++;
for(x[0]=0,i=1;i<256;i++)
x[i]=x[i-1]+c[i-1];
for(i=0;i<n;i++)
w[x[(u[i]>>(b*8))&(0xFF)]++]=u[i];
}
int main() {
freopen("radixsort.in","r",stdin),
freopen("radixsort.out","w",stdout),
scanf("%d%d%d%d",&n,&a,&b,&c),v[0]=b%c,t=new int[n],r=sizeof(v[0]);
for(i=1;i<n;i++)
v[i]=(1LL*a*v[i-1]%c+b)%c;
for(i=0;i<r;i++)
C(i&1?t:v,i&1?v:t,i);
for(i=0;i<n;i+=10)
printf("%d ",v[i]);
}