Pagini recente » Cod sursa (job #469652) | Cod sursa (job #1200929) | Cod sursa (job #2106910) | Cod sursa (job #2811342) | Cod sursa (job #1405561)
#include <cstdio>
#include <cstring>
FILE* in=fopen("radixsort.in","r");
FILE* out=fopen("radixsort.out","w");
int n,a,b,c;
const int Q=10000007;
int v[Q];
int aux[Q];
int cate[255];
int main()
{
fscanf(in,"%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;
}
int go;
for(int k=0; k<32; k+=8)
{
memset(cate,0,sizeof cate);
for(int i=1; i<=n; i++)
{
go=((v[i])>>k)&255;
cate[go]++;
}
for(int i=1; i<256; i++)
cate[i]+=cate[i-1];
for(int i=255; i>0; i--)
{
cate[i]=cate[i-1];
}
cate[0]=0;
for(int i=1; i<=n; i++)
{
go=((v[i])>>k)&255;
aux[++cate[go]]=v[i];
}
for(int i=1; i<=n; i++)
{
v[i]=aux[i];
}
}
for(int i=1; i<=n; i+=10)
{
fprintf(out,"%d ",v[i]);
}
return 0;
}