Pagini recente » Cod sursa (job #264947) | Cod sursa (job #1846879) | Cod sursa (job #1255653) | Cod sursa (job #3139983) | Cod sursa (job #1363437)
#include<stdio.h>
#include<string.h>
int n, a, b, c, z;
int v[10000010];
int v1[10000010];
inline int extract(int x)
{
return ((x >> (z * 8)) & 0xFF);
}
void mysort(int x[], int y[])
{
int counter[1 << 8];
int index[1 << 8];
memset(counter, 0, sizeof(counter));
for(int i = 0 ; i < n ; ++i) {
++counter[extract(x[i])];
}
index[0] = 0;
for(int i = 1 ; i < (1 << 8) ; ++i) {
index[i] = index[i-1] + counter[i-1];
}
for(int i = 0 ; i < n ; ++i) {
y[index[extract(x[i])]++] = x[i];
}
}
int main()
{
freopen("radix.in", "r", stdin);
freopen("radix.out", "w", stdout);
scanf("%d%d%d%d", &n, &a, &b, &c);
v[0] = b;
for(int i = 1 ; i < n ; ++i)
v[i] = ((1LL * a * v[i-1]) % c + b) % c;
int size = sizeof(int);
for(z = 0 ; z < size ; ++z) {
mysort(v, v1);
++z;
mysort(v1, v);
}
for(int i = 0 ; i < n ; i += 10)
printf("%d ", v[i]);
return 0;
}