Pagini recente » Cod sursa (job #39482) | Cod sursa (job #3037613) | Cod sursa (job #2321058) | Cod sursa (job #823244) | Cod sursa (job #2225803)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
queue<int> counter[256], aux_counter[256];
unsigned int aux;
int main() {
int n, a, b, c, i, j;
fin >> n >> a >> b >> c;
fin.close();
int cr, prev;
// byte 0
cr = b;
aux = cr & 255;
counter[aux].push(cr);
prev = cr;
for (i = 2; i <= n; i++) {
cr = ((1LL * a * prev) % c + b) % c;
aux = cr & 255;
counter[aux].push(cr);
prev = cr;
}
// byte 1
for (i = 0; i < 256; i++) {
while (!counter[i].empty()) {
cr = counter[i].front();
counter[i].pop();
aux = (cr >> 8) & 255;
aux_counter[aux].push(cr);
}
}
// byte 2
for (i = 0; i < 256; i++) {
while (!aux_counter[i].empty()) {
cr = aux_counter[i].front();
aux_counter[i].pop();
aux = (cr >> 16) & 255;
counter[aux].push(cr);
}
}
// byte 3
for (i = 0; i < 256; i++) {
while (!counter[i].empty()) {
cr = counter[i].front();
counter[i].pop();
aux = (cr >> 24) & 255;
aux_counter[aux].push(cr);
}
}
// print
prev = 0;
for (i = 0; i < 256; i++) {
while (!aux_counter[i].empty()) {
cr = aux_counter[i].front();
aux_counter[i].pop();
if (prev % 10 == 0) {
fout << cr << " ";
prev = 1;
}
else prev++;
}
}
fout.close();
return 0;
}