Pagini recente » Cod sursa (job #1481504) | Cod sursa (job #2403047) | Cod sursa (job #2537481) | Cod sursa (job #3198336) | Cod sursa (job #1527552)
#include<fstream>
#include<cstring>
#define DIM 10000005
using namespace std;
int n, t, i, a, b, c, maxim;
int v[DIM], w[DIM], f[270];
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int main(){
fin>> n >> a >> b >> c;
v[1] = b;
for(i = 2; i <= n; i++){
v[i] = (a * 1LL * v[i - 1] % c + b) % c;
maxim = max(maxim, v[i]);
}
t = 1;
while(t < maxim){
memset(f, 0, sizeof(f));
for(i = 1; i <= n; i++){
f[ v[i] / t % 256]++;
}
for(i = 1; i < 256; i++){
f[i] += f[i - 1];
}
for(i = n; i >= 1; i--){
w[ f[v[i] / t % 256] ] = v[i];
f[v[i] / t % 256]--;
}
for(i = 1; i <= n; i++){
v[i] = w[i];
}
t *= 256;
}
for(i = 1; i <= n; i+= 10){
fout<< v[i] <<" ";
}
return 0;
}