Pagini recente » Cod sursa (job #1467208) | Cod sursa (job #756737) | Cod sursa (job #2049019) | Cod sursa (job #1853012) | Cod sursa (job #3038437)
#include <fstream>
#include <algorithm>
#define BAZA 256
using namespace std;
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
int n, m, a, b, c, i, j, maxim, cifre, z;
int v[10000002], w[10000002], f[BAZA+2];
int main () {
cin>>n>>a>>b>>c;
v[1]=b;
for (i=2;i<=n;i++) {
v[i]=(a*v[i-1]+b)%c;
if (v[i] > maxim)
maxim = v[i];
}
cifre = 0;
while (maxim) {
cifre++;
maxim /= BAZA;
}
z=0;
for(c=1;c<=cifre;c++){
for(i=0;i<BAZA;i++)
f[i]=0;
for(i=1;i<=n;i++){
f[(v[i]>>z)&255]++;
}
for(i=1;i<BAZA;i++)
f[i]+=f[i-1];
for(i=n;i>=1;i--)
w[f[(v[i]>>z)&255]--]=v[i];
for(i=1;i<=n;i++)
v[i]=w[i];
z+=8;
}
for(i=1;i<=n;i+=10){
cout<<v[i]<<" ";
}
}