Pagini recente » Cod sursa (job #279695) | Cod sursa (job #1568050) | Cod sursa (job #1984863) | Cod sursa (job #40097) | Cod sursa (job #2612185)
#include <iostream>
#include <fstream>
#include <list>
#include <cmath>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
void radixsort(int *arr, int n, int max) {
int i, j, m, p = 1, index, temp, count = 0;
list<int> pocket[10];
for(i = 0; i< max; i++) {
m = pow(10, i+1);
p = pow(10, i);
for(j = 0; j<n; j++) {
temp = arr[j]%m;
index = temp/p;
pocket[index].push_back(arr[j]);
}
count = 0;
for(j = 0; j<10; j++) {
while(!pocket[j].empty()) {
arr[count] = *(pocket[j].begin());
pocket[j].erase(pocket[j].begin());
count++;
}
}
}
}
int main()
{
int n, a, b, c;
f>>n>>a>>b>>c;
int v[n];
v[0] = b;
for(int i=1;i<n;i++)
v[i] = (a * v[i-1] + b) % c;
radixsort(v,n,3);
for(int i = 0;i<n;i += 10)
g<<v[i]<<" ";
return 0;
}