Pagini recente » Cod sursa (job #1763148) | Cod sursa (job #2755890) | Cod sursa (job #2930344) | Cod sursa (job #1856756) | Cod sursa (job #2562973)
#include <cstdio>
#include <vector>
using namespace std;
vector<int> v, aux;
const int MASK = 255;
void radix(int N, int step) {
vector<vector<int>> buckets(MASK + 1);
for (int i = 1; i <= N; ++i)
buckets[ (v[i] >> (8*step)) & MASK].emplace_back(v[i]);
int pz = 1;
for (auto it: buckets)
for (auto jt: it)
v[pz++] = jt;
}
int main()
{
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
int N, A, B, C;
scanf("%d%d%d%d", &N, &A, &B, &C);
v.resize(N + 1);
v[1] = B;
for (int i = 2; i <= N; ++i)
v[i] = ((long long)A * ((long long)v[i - 1]) + (long long)B) % C;
for (int i = 0; i < 4; ++i)
radix(N, i);
for (int i = 1; i <= N; i += 10)
printf("%d ", v[i]);
printf("\n");
return 0;
}