Pagini recente » Cod sursa (job #2761208) | Cod sursa (job #3241023) | Cod sursa (job #2921126) | Cod sursa (job #2588119) | Cod sursa (job #1313523)
#include <cstdio>
using namespace std;
int n,a,b,c,i;
int v[10000001];
int t[10000001];
int ind[301],cont[301];
int cod(int nr,int i)
{
return ((nr>>(8*i))&255);
}
void cif(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)
cif(v,t,i);
else
cif(t,v,i);
for (i=1;i<=n;i+=10) printf("%d ",v[i]);
return 0;
}