Pagini recente » Cod sursa (job #3291251) | Cod sursa (job #2275637) | Cod sursa (job #135430) | Cod sursa (job #1411145) | Cod sursa (job #1315802)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define mask (1<<8)
#define NMAX 10000007
vector < int > H[NMAX];
vector < int > :: iterator f;
int N,A,B,C,i,shift;
int V[NMAX];
int main()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&N,&A,&B,&C);
for (i=2,V[1]=B;i<=N;++i)
V[i]=(1LL*A*V[i-1]+B)%C;
for (;shift<=31;shift+=8)
{
for (i=1;i<=N;++i)
H[(V[i]>>shift)&(mask-1)].push_back(V[i]);
V[0]=0;
for (i=0;i<mask;++i)
for (f=H[i].begin();f!=H[i].end();++f)
V[++V[0]]=*f;
for (i=0;i<mask;++i)
while (!H[i].empty()) H[i].pop_back();
}
for (i=1;i<=V[0];i+=10)
printf("%d ",V[i]);
return 0;
}