Pagini recente » Monitorul de evaluare | Cod sursa (job #1380828) | Cod sursa (job #282769) | Cod sursa (job #634471) | Cod sursa (job #2201447)
#include <stdio.h>
int n,m,a,b,c;
int v[1000005],x[65600],aux[1000005];
int main()
{
int i,j,c1;
unsigned long long crt;
FILE *f,*g;
f=fopen("radixsort.in","r");
g=fopen("radixsort.out","w");
fscanf(f,"%d%d%d%d",&n,&a,&b,&c);
v[1]=b;
m=1;
crt=b;
for(i=2;i<=n;i++)
{
crt=(crt*a+b)%c;
printf("%d ",crt);
v[i]=(a*v[i-1]+b)%c;
}
c1=1<<16;
// for(i=1;i<=n;i++)
// printf("%d ",v[i]);
for(i=1;i<=n;i++)
x[v[i]%c1]++;
for(i=2;i<=c1;i++)
x[i]+=x[i-1];
for(i=1;i<=n;i++)
{
j=v[i]%c1;
x[j-1]++;
aux[x[j-1]]=v[i];
}
for(i=0;i<=c1;i++)
x[i]=0;
for(i=1;i<=n;i++)
x[aux[i]/c1%c1]++;
for(i=2;i<=c1;i++)
x[i]+=x[i-1];
for(i=1;i<=n;i++)
{
j=aux[i]/c1%c1;
x[j-1]++;
v[x[j-1]]=aux[i];
}
for(i=1;i<=n;i+=10)
fprintf(g,"%d ",v[i]);
fclose(f);
fclose(g);
}