Pagini recente » Cod sursa (job #631550) | Cod sursa (job #948018) | Cod sursa (job #1505731) | Cod sursa (job #364760) | Cod sursa (job #1786223)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
main() {
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
unsigned int n, a, b, c;
cin>>n>>a>>b>>c;
//sqrtN buckets
unsigned int kn = round(sqrt(c))+100;
vector< vector<unsigned int> > t(kn);
//generate vector
unsigned int x = b;
t[x/kn].push_back(x);
for (int i = 1; i<n; i++) {
x = (a * x + b) % c;
t[x/kn].push_back(x);
}
//sort buckets
for (int i = 0; i < t.size(); i++) {
sort(t[i].begin(), t[i].end());
}
//show
int k = 0;
for (int i = 0; i < t.size(); i++) {
if (t[i].size()) {
for (int j = 0; j < t[i].size(); j++) {
k++;
if (k%10==1) {
cout<<t[i][j]<<" ";
}
}
}
}
}