Pagini recente » Cod sursa (job #1769463) | Cod sursa (job #1171259) | Cod sursa (job #1793638) | Cod sursa (job #1103541) | Cod sursa (job #1952374)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, a, b, c, A[10000005], kmax;
queue<int> Cif[10];
int main()
{
fin >> n >> a >> b >> c;
A[1] = b;
int x = A[1], k;
while(x) {
x /= 10;
++kmax;
}
for(int i = 2; i <= n; ++i) {
A[i] = (a * A[i - 1] + b) % c;
x = A[i];
k = 0;
while(x) {
x /= 10;
++k;
}
if(k > kmax) kmax = k;
}
for(int cif = 1, p10 = 1; cif <= kmax; ++cif, p10 *= 10) {
for(int i = 1; i <= n; ++i)
Cif[A[i] / p10 % 10].push(A[i]);
k = 0;
for(int i = 0; i <= 9; ++i)
while(!Cif[i].empty()) {
A[++k] = Cif[i].front();
Cif[i].pop();
}
}
for(int i = 1; i <= n; i += 10)
fout << A[i] << ' ';
fin.close();
fout.close();
return 0;
}