Pagini recente » Cod sursa (job #952292) | Cod sursa (job #727938) | Cod sursa (job #1542335) | Cod sursa (job #426000) | Cod sursa (job #2298094)
#include <stdio.h>
#define nmax 10001001
using namespace std;
int a,b,c,i,n,v[nmax];
int detmax(int n,int v[]){
int i,mmax=v[1];
for(i=2;i<=n;i++) if(v[i]>mmax) mmax=v[i];
return mmax;
}
void sorta(int n,int v[],int exp){
int sol[n+1],i,cnt[10]={0};
for(i=1;i<=n;i++) cnt[(v[i]/exp)%10]++;
for(i=1;i<10;i++) cnt[i]+=cnt[i-1];
for(i=n;i>=1;i--){
sol[cnt[(v[i]/exp)%10]]=v[i];
cnt[(v[i]/exp)%10]--;
}
for(i=1;i<=n;i++) v[i]=sol[i];
}
void rsort(int n,int v[]){
int exp,mmax;
mmax=detmax(n,v);
for(exp=1;mmax/exp>0;exp*=10)
sorta(n,v,exp);
}
int main()
{freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&n,&a,&b,&c);
v[1]=b;
for(i=2;i<=n;i++) v[i]=(a*v[i-1]+b)%c;
rsort(n,v);
for(i=1;i<=n;i+=10) printf("%d ",v[i]);
return 0;
}