Pagini recente » Cod sursa (job #1667045) | Cod sursa (job #1806453) | Cod sursa (job #2053575) | Cod sursa (job #577822) | Cod sursa (job #2617342)
#include <bits/stdc++.h>
using namespace std;
int n, a, b, c;
vector<int> v;
void radix_offset(vector<int>& v, int i){
int bit = 255 << (i * 8);
vector<int> buckets[257];
for (auto x : v){
int bit_offset = (x & bit) >> (i * 8);
buckets[bit_offset].push_back(x);
}
v.clear();
for (int j = 0; j <= 256; j++){
for (auto x : buckets[j])
v.push_back(x);
}
}
void radixsort(vector<int> & vc){
int maximum = *max_element(vc.begin(), vc.end());
int bytes = 0;
while(maximum){
bytes += 1;
maximum = maximum >> 1;
}
if (bytes % 256 == 0)
bytes = bytes / 256;
else
bytes = bytes / 256 + 1;
for (int i = 0; i < bytes; i++)
radix_offset(vc, i);
}
int main() {
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> a >> b >> c;
v.push_back(b);
for (int i = 1; i < n; i++)
v.push_back((1LL* a * v[i - 1] + b) % c);
radixsort(v);
for (int i = 0; i < v.size(); i+=10)
cout << v[i] << " ";
return 0;
}