Pagini recente » Cod sursa (job #2816752) | Rating Dascalu Luca Petru (pisco1234) | Cod sursa (job #294767) | Cod sursa (job #2938504) | Cod sursa (job #1656805)
#include<cstdio>
#include<vector>
using namespace std;
unsigned int v[10000001],aux[10000001];
int vc[256];
int n,a,b,c,sh,cate,p8,biti;
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(int i=2;i<=n;i++){
v[i]=(a* v[i-1] + b)%c;
}
sh=255;
p8=1;
for(int q=1;q<=4;q++){
for(int i=0;i<=255;i++)
vc[i]=0;
for(int i=1;i<=n;i++){
if(sh==255)
biti=v[i]&sh;
else
biti=(v[i]&sh)>>p8;
vc[biti]++;
}
for(int i=1;i<=255;i++)
vc[i]+=vc[i-1];
for(int i=255;i>=1;i--)
vc[i]=vc[i-1];
for(int i=1;i<=n;i++){
if(sh==255)
biti=v[i]&sh;
else
biti=(v[i]&sh)>>p8;
vc[biti]++;
aux[vc[biti]]=v[i];
}
for(int i=1;i<=255;i++)
v[i]=aux[i];
//
sh=sh<<8;
p8+=8;
}
for(int i=1;i<=n;i+=10)
printf("%d ",v[i]);
return 0;
}