Pagini recente » Cod sursa (job #3280971) | Cod sursa (job #2561272) | Cod sursa (job #2984733) | Cod sursa (job #3256968) | Cod sursa (job #1100008)
#include <cstdio>
#include <cstring>
using namespace std;
const int N=10000007;
int a[2][N], ncount[1<<8], indx[1<<8];
int main()
{
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
int n, i, A, B, C, j, u;
scanf("%d%d%d%d", &n, &A, &B, &C);
a[0][1]=B;
for(i=2;i<=n;i++) a[0][i]=(1LL*A*a[0][i-1]+B)%C;
for(j=0, u=0;j<4;j++, u^=1)
{
memset(ncount, 0, sizeof(ncount));
for(i=1;i<=n;i++)
{
ncount[(a[u][i]>>(8*j))&0xFF]++;
}
indx[0]=1;
for(i=1;i<(1<<8);i++) indx[i]=indx[i-1]+ncount[i-1];
for(i=1;i<=n;i++)
{
a[u^1][indx[(a[u][i]>>(8*j))&0xFF]++]=a[u][i];
}
}
for(i=1;i<=n;i+=10) printf("%d ", a[0][i]);
}///