Pagini recente » Cod sursa (job #2800974) | Cod sursa (job #2444034) | Cod sursa (job #2066966) | Cod sursa (job #2001595) | Cod sursa (job #1369852)
#include<fstream>
#include<queue>
#define Nmax 10000005
#define MASK 511
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
using namespace std;
int V[Nmax];
queue<int > Q[MASK + 1];
int main()
{
int N, A, B, C;
in >> N >> A >> B >> C;
V[1] = B;
for (int i = 2; i <= N; i++)
V[i] = (1LL * V[i - 1] * A + B) % C;
for (int t = 0; t < 4; t++)
{
for (int i = 1; i <= N; i++)
Q[ (V[i] & (MASK << (t * 8))) >> (t * 8) ].push(V[i]);
int k = 0;
for (int i = 0; i < MASK; i++)
while (!Q[i].empty())
{
V[++k] = Q[i].front();
Q[i].pop();
}
}
for (int i = 1; i <= N; i += 10)
out << V[i] << " ";
}