Pagini recente » Cod sursa (job #1849687) | Cod sursa (job #2125800)
#include<fstream>
using namespace std;
int main() {
ifstream in("radixsort.in");
int N, A, B, C;
in >> N >> A >> B >> C;
long long *v = new long long[N];
v[0] = B;
for (int i = 1;i < N;++i)
v[i] = ((A * v[i - 1]) % C + B) % C;
int mx = v[0];
for (int i = 1; i < N; ++i)
if (v[i] > mx)
mx = v[i];
for (long long tiz = 1; mx / tiz; tiz *= 10) {
int *result = new int[N];
int hany[10] = { 0 };
for (int i = 0;i < N;++i)
++hany[(v[i] / tiz) % 10];
for (int i = 1;i < 10;++i)
hany[i] += hany[i - 1];
for (int i = N - 1;i >= 0;--i)
result[--hany[(v[i] / tiz) % 10]] = v[i];
for (int i = 0;i < N;++i)
v[i] = result[i];
}
ofstream out("radixsort.out");
for (int i = 0;i < N;i += 10)
out << v[i] << " ";
return 0;
}