Pagini recente » Cod sursa (job #2138458) | Cod sursa (job #2137601) | Cod sursa (job #45717) | Cod sursa (job #150464) | Cod sursa (job #1887105)
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
#define DIM 10000005
queue <int> Q[256];
int V[DIM];
int main() {
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
int N, A, B, C;
scanf("%d %d %d %d\n", &N, &A, &B, &C);
V[1] = B % C;
for(int i = 2; i <= N; ++i) {
V[i] = (1LL * A * V[i - 1] + B) % C;
}
int pos;
for(int bit = 0; bit < 32; bit += 8) {
pos = 0;
for(int i = 1; i <= N; ++i) {
Q[(V[i]>>bit)&255].push(V[i]);
}
for(int i = 0; i < 256; ++i) {
while(!Q[i].empty()) {
V[++pos] = Q[i].front();
Q[i].pop();
}
}
}
for(int i = 1; i <= N; i += 10) {
cout << V[i] << ' ';
}
cout << '\n';
return 0;
}