Pagini recente » Cod sursa (job #188474) | Cod sursa (job #2125573)
#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 *output = new int[N];
int i, count[10] = { 0 };
for (i = 0; i < N; i++)
count[(v[i] / tiz) % 10]++;
for (i = 1; i < 10; i++)
count[i] += count[i - 1];
for (i = N - 1; i >= 0; i--)
{
output[count[(v[i] / tiz) % 10] - 1] = v[i];
count[(v[i] / tiz) % 10]--;
}
for (i = 0; i < N; i++)
v[i] = output[i];
}
ofstream out("radixsort.out");
for (int i = 0;i < N;i += 10)
out << v[i] << " ";
return 0;
}