Pagini recente » Cod sursa (job #2999606) | Cod sursa (job #533130) | Cod sursa (job #3201335) | Cod sursa (job #2912813) | Cod sursa (job #3198493)
#include <fstream>
#define baza 100
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
long long A,B,C;
int a[2][10000002],n,ok,r,nr[baza],poz[baza],vmax,k;
long long p,q;
int main()
{
fin>>n>>A>>B>>C;
a[0][1]=B;
vmax=B;
nr[B%baza]++;
for(int i=2;i<=n;i++){
a[0][i]=(A * a[0][i-1] + B) % C;
vmax=max(vmax,a[0][i]);
nr[a[0][i]%baza]++;
}
p=1;
for(k=1;p<=vmax;k=1-k){
poz[0]=0;
for(int i=1;i<=baza-1;i++){
poz[i]=poz[i-1]+nr[i-1];
}
for(int i=0;i<=baza-1;i++){
nr[i]=0;
}
q=p*baza;
for(int i=1;i<=n;i++){
int z=a[1-k][i];
int x=z/p%baza;
a[k][poz[x]+1]=z;
poz[x]++;
nr[z/q%baza]++;
}
p=q;
}
for(int i=1;i<=n;i=i+10){
fout<<a[1-k][i]<<" ";
}
return 0;
}