Pagini recente » Cod sursa (job #2200166) | Cod sursa (job #3126977) | Cod sursa (job #2151919) | Cod sursa (job #2976191) | Cod sursa (job #1182587)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
int main() {
ifstream in;
in.open("radixsort.in");
ofstream out;
out.open("radixsort.out");
int n, A, B, C, max, c = 0, i ,j, k, m = 1;
queue<int> q[10];
in >> n >> A >> B >> C;
int *v = new int[n];
v[0] = B;
max = v[0];
for (i = 1; i < n; i++) {
v[i] = (A * v[i-1] + B) % C;
if (v[i] > max)
max = v[i];
}
while (max != 0) {
max = max / 10;
c++;
}
for (i = 0; i < c; i++) {
for (j = 0; j < n; j++)
q[(v[j]/m)%10].push(v[j]);
k = 0;
for (j = 0; j < 10; j++) {
while (q[j].empty() != 1) {
v[k] = q[j].front();
q[j].pop();
k++;
}
}
m = m * 10;
}
for (i = 0; i < n; i = i + 10)
out << v[i] << " ";
in.close();
out.close();
return 0;
}