Pagini recente » Cod sursa (job #2558716) | Cod sursa (job #1795494) | Cod sursa (job #134907) | Cod sursa (job #3216243) | Cod sursa (job #3038439)
#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*1LL*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]<<" ";
}
}