Pagini recente » Cod sursa (job #2277661) | Cod sursa (job #2859147) | Cod sursa (job #2936053) | Cod sursa (job #1909855) | Cod sursa (job #1115926)
#include<cstdio>
int n,a,b,c,m,i,j,v[10001000],x[10001000],fr[1000],vmax,nmax,nr,s[1000];
long long p;
FILE *f,*g;
int main(){
f=fopen("radixsort.in","r");
g=fopen("radixsort.out","w");
fscanf(f,"%d%d%d%d",&n,&a,&b,&c);
v[1]=b;
vmax=b;
for(j=2;j<=n;j++){
v[j]=int((long long)(a*v[j-1]+b)%c);
if(v[j]>vmax)
vmax=v[j];
}
/*
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
if(v[i]>vmax)
vmax=v[i];
}
*/
nmax=vmax;
while(vmax>0){
nr++;
vmax/=10;
}
p=1;
for(i=1;i<=nr;i++){
for(j=0;j<=9;j++){
fr[j]=0;
}
p*=10;
for(j=1;j<=n;j++){
a=v[j];
fr[(v[j]%p)/(p/10)]++;
}
for(j=0;j<=9;j++){
s[j]=s[j-1]+fr[j];
}
for(j=n;j>=1;j--){
a=(v[j]%p)/(p/10);
x[s[a]]=v[j];
s[a]--;
}
for(j=1;j<=n;j++){
v[j]=x[j];
}
}
for(i=1;i<=n;i+=10){
fprintf(g,"%d ",v[i]);
}
fclose(f);
fclose(g);
return 0;
}