Pagini recente » Cod sursa (job #12135) | Cod sursa (job #374198) | Cod sursa (job #472661) | Cod sursa (job #131128) | Cod sursa (job #2866365)
#include <iostream>
#include <vector>
int main(){
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
int n, i, j, k;
long long vmax, p, a, b, c;
std::vector<int> v;
std::cin >> n >> a >> b >> c;
v.push_back(b);
vmax = b;
for(i = 1; i < n; i ++){
long long x = (a * v[i - 1] + b) % c;
v.push_back((int)x);
vmax = std::max(vmax, x);
}
p = 1;
do{
p *= 10;
std::vector<int> t[10];
for(i = 0; i < n; i ++)
t[(v[i] % p) / (p / 10)].push_back(v[i]);
for(i = 0, k = 0; i < 10; i ++)
for(j = 0; j < t[i].size(); j ++, k ++)
v[k] = t[i][j];
}
while(vmax / p > 0);
for(i = 0; i < n; i += 10)
std::cout << v[i] << " ";
return 0;
}