Pagini recente » Cod sursa (job #2622782) | Cod sursa (job #904639) | Cod sursa (job #909466) | Cod sursa (job #3169811) | Cod sursa (job #1529623)
#include<cstdio>
#include<cstring>
using namespace std;
int n,a,b,c,i,cnt[300],ind[300],v[10000002],y[10000002];
void intersanj(int a[],int b[],int x)
{
int i;
memset(cnt,0,sizeof(cnt));
memset(ind,0,sizeof(ind));
for(i=1;i<=n;i++)
{
cnt[(a[i]>>(8*x))&255]++;
}
for(i=1;i<=255;i++)
{
ind[i]=ind[i-1]+cnt[i-1];
}
for(i=1;i<=n;i++)
{
b[++ind[(a[i]>>(8*x))%256]]=a[i];
}
}
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]=((long long)v[i-1]*a+b)%c;
}
for(i=0;i<=3;i++)
{
if(i%2==0)
{
intersanj(v,y,i);
}
else
{
intersanj(y,v,i);
}
}
for(i=1;i<=n;i+=10)
{
printf("%d ",v[i]);
}
return 0;
}