Pagini recente » Cod sursa (job #1784792) | Cod sursa (job #1557776) | Cod sursa (job #2187614) | preONI 2008 - Runda Finala | Cod sursa (job #1464549)
#include<cstdio>
#include<cstring>
using namespace std;
int v[10000010],v0[10000010],nr[10];
int main(){
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
int n,a,b,c,i,maxim,t;
scanf("%d%d%d%d",&n,&a,&b,&c);
v[1]=maxim=b;
for(i=2;i<=n;i++){
v[i]=(a*v[i-1]+b)%c;
if(v[i]>maxim)
maxim=v[i];
}
for(t=1;maxim/t>0;t*=10){
memset(nr,0,sizeof(nr));
for(i=1;i<=n;i++)
nr[(v[i]/t)%10]++;
for(i=1;i<=9;i++)
nr[i]+=nr[i-1];
for(i=n;i>=1;i--){
v0[nr[(v[i]/t)%10]]=v[i];
nr[(v[i]/t)%10]--;
}
for(i=1;i<=n;i++)
v[i]=v0[i];
}
for(i=1;i<=n;i+=10)
printf("%d ",v[i]);
return 0;
}