Pagini recente » Cod sursa (job #1767922) | Cod sursa (job #1288099) | Cod sursa (job #993301) | Cod sursa (job #1905725) | Cod sursa (job #1540310)
#include <fstream>
#include <iostream>
#include <queue>
#define t1 0b11111111
using namespace std;
ifstream fi("radixsort.in");
ofstream fo("radixsort.out");
int n, i, iq, v[10000001], p10, p, a, b, c, byte;
queue<int> q[t1];
int main() {
fi >> n >> a >> b >> c;
v[1] = b;
for (i = 2; i <= n; i++)
v[i] = (a * v[i-1] + b) % c;
p10 = 1;
for (byte = 0; byte <= 3; byte++) {
for (i = 1; i <= n; i++) {
c = v[i] >> byte & t1; // t1 - toti bitii de 1
q[c].push(v[i]);
}
i = 0;
for (iq = 0; iq <= t1; iq++) // Punem elementele in v.
while (not q[iq].empty()) {
i++;
v[i] = q[iq].front();
q[iq].pop();
}
}
for (i = 1; i <= n; i += 10)
fo << v[i] << ' ';
return 0;
}