Pagini recente » Cod sursa (job #482650) | Cod sursa (job #1942248) | Cod sursa (job #2203132) | Cod sursa (job #2957166) | Cod sursa (job #2182847)
/// Radix Sort
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n,a[100000001],grupe[10][10000000],d[10],A,B,C;
int v[100];
int main ()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&A,&B,&C);
a[1]=B;
for(int i=1;i<=n;++i)
a[i] = (A*a[i-1]+B)%C;
int p = 1, k = 10; // maximum 10 cifre
for(int pas = 1; pas <= k; ++pas ){
memset(d,0,sizeof(d));
for(int i=1;i<=n;++i){
int c = a[i] / p % 10;
++d[c];
grupe[c][d[c] ] = a[i];
}
n = 0;
for(int i=0;i<10;++i){
for(int j = 1; j<= d[i]; ++j )
a[++n] = grupe[i][j];
}
p*=10;
}
for(int i=1;i<=n;i+=10)
printf("%d ",a[i]);
return 0;
}