Pagini recente » Cod sursa (job #2891991) | Cod sursa (job #1960556) | Cod sursa (job #585689) | Cod sursa (job #326325) | Cod sursa (job #1969338)
#include <bits/stdc++.h>
using namespace std;
const int Nmax = 1e7 + 5;
int A, B, C, n, s, ss, i, j, a[Nmax], b[Nmax], bucket[260];
int main()
{
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
scanf("%d%d%d%d", &n, &A, &B, &C);
a[1] = B;
for(i=2; i<=n; ++i) a[i] = (1LL * A * a[i-1] + B) % C;
for(j=0; j<32; j+=8)
{
for(i=0; i<256; ++i) bucket[i] = 0;
for(i=1; i<=n; ++i) ++bucket[(a[i]>>j) & 255];
s = 0;
for(i=0; i<256; ++i)
{
ss = s;
s += bucket[i];
bucket[i] = ss;
}
for(i=1; i<=n; ++i)
b[ ++bucket[(a[i]>>j) & 255] ] = a[i];
for(i=1; i<=n; ++i) a[i] = b[i];
}
for(i=1; i<=n; i+=10) printf("%d ", a[i]);
return 0;
}