Pagini recente » Cod sursa (job #212156) | Cod sursa (job #197822) | Cod sursa (job #3002542) | Cod sursa (job #2543073) | Cod sursa (job #1966383)
#include <stdio.h>
#include <stdlib.h>
int v[10000001],f[10],aux[10000001];
int main()
{
int n,a,b,c,p10,i,j;
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]=((long long)a*v[i-1]+b)%c;
p10=1;
for(i=1; p10<c; i++)
{
for(j=0; j<10; j++)
f[j]=0;
for(j=1; j<=n; j++)
f[v[j]/p10%10]++;
for(j=1; j<10; j++)
f[j]=f[j-1]+f[j];
for(j=9; j>0; j--)
f[j]=f[j-1]+1;
f[0]=1;
for(j=1; j<=n; j++)
aux[f[v[j]/p10%10]++]=v[j];
for(j=1; j<=n; j++)
v[j]=aux[j];
p10*=10;
}
for(i=1; i<=n; i+=10)
printf("%d ",v[i]);
return 0;
}