Pagini recente » Cod sursa (job #2955575) | Cod sursa (job #778324) | Cod sursa (job #884347) | Cod sursa (job #2448450) | Cod sursa (job #2866358)
#include <iostream>
#include <vector>
int main(){
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
int n, a, b, c, i, j, k;
long long vmax, p;
std::vector<long long> v;
std::cin >> n >> a >> b >> c;
v.push_back(b);
vmax = b;
for(i = 1; i < n; i ++){
v.push_back((a * v[i - 1] + b) % c);
vmax = std::max(vmax, v[i]);
}
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;
}