Pagini recente » Cod sursa (job #2136770) | Cod sursa (job #340630) | Cod sursa (job #1178763) | Cod sursa (job #685500) | Cod sursa (job #1138260)
#include <cstdio>
using namespace std;
int n,a,b,c,i;
int v[10000100];
int t[10000100];
int ind[300],cont[300];
int cod(int nr,int i)
{
return ( (nr>>(8*i))&255);
}
void numarating(int a[],int b[],int x)
{
int i;
for (i=0;i<=256;i++) ind[i]=cont[i]=0;
for (i=1;i<=n;i++)
cont[cod(a[i],x)]++;
for (i=1;i<=255;i++)
ind[i]=ind[i-1]+cont[i-1];
for (i=1;i<=n;i++)
b[++ind[(cod(a[i],x))]]=a[i];
}
int main()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
v[1]=b;
for (i=1;i<=n;i++) v[i]=(long long(a*v[i-1]+b))%c;
for (i=0;i<=3;i++)
if (i%2==0)
numarating(v,t,i);
else
numarating(t,v,i);
for (i=1;i<=n;i+=10) printf("%d ",v[i]);
return 0;
}