Pagini recente » Cod sursa (job #1323737) | Cod sursa (job #1393399) | Cod sursa (job #2914931) | Cod sursa (job #1769600) | Cod sursa (job #1969331)
#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=1; i<=n; ++i) a[i] = (1LL * A * a[i-1] + B) % C;
for(j=0; j<32; j+=8)
{
for(j=0; j<256; ++j) bucket[j] = 0;
for(i=1; i<=n; ++i) ++bucket[(a[i]>>j) & 255];
s = 0;
for(j=0; j<256; ++j)
{
ss = s;
s += bucket[j];
bucket[j] = 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;
}