Pagini recente » Cod sursa (job #1200536) | Cod sursa (job #2669079) | Cod sursa (job #713200) | Cod sursa (job #1244192) | Cod sursa (job #2866469)
#include <iostream>
#include <vector>
#include <fstream>
std::ifstream f("radixsort.in");
std::ofstream g("radixsort.out");
int main(){
int n, i, j, arr, start;
long long vmax, p, a, b, c, x;
std::vector<int> t[2][10];
f >> n >> a >> b >> c;
t[0][b % 10].push_back((int)b);
vmax = b;
x = b;
for(i = 1; i < n; i ++){
x = (a * x + b) % c;
t[0][x % 10].push_back((int)x);
vmax = std::max(vmax, x);
}
p = 10;
arr = 1;
do{
p *= 10;
for(i = 0; i < 10; ++ i){
for(j = 0; j < t[arr ^ 1][i].size(); j ++)
t[arr][(t[arr ^ 1][i][j] % p) / (p / 10)].push_back(t[arr ^ 1][i][j]);
t[arr ^ 1][i].clear();
}
arr = (arr ^ 1);
}
while(vmax / p > 0);
arr = (arr ^ 1);
start = 0;
for(i = 0; i < 10; i ++){
for(j = start; j < t[arr][i].size(); j += 10)
g << t[arr][i][j] << " ";
start = j - t[arr][i].size();
}
return 0;
}