Pagini recente » Cod sursa (job #594278) | Cod sursa (job #2173151) | Cod sursa (job #2710434) | Cod sursa (job #1635613) | Cod sursa (job #1786096)
#include <iostream>
#include <fstream>
#define dmax 10000001
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, a, b, c, v[dmax];
int r[11][dmax];
int main()
{
int i, j, k, nr = 0, vmax, nr_cif = 0, p = 1;
fin >> n >> a >> b >> c;
v[1] = b;
vmax = v[1];
for (i = 2; i <= n; ++i){
v[i] = (a * v[i-1] + b) % c;
if (v[i] > vmax) vmax = v[i];
}
while (vmax){
++nr_cif;
vmax /= 10;
}
for (i = 1; i <= nr_cif; ++i){
for (j = 1; j <= n; ++j){
int x = (v[j]/p)%10;
r[x][0]++;
int y = r[x][0];
r[x][y] = v[j];
}
for (j = 0; j<= 9; ++j)
for (k = 1; k <= r[j][0]; ++k)
if (r[j][k])
v[++nr] = r[j][k];
p *= 10;
}
for (i = 1; i<= n; i+=10)
fout << v[i] << " ";
return 0;
}