Pagini recente » Cod sursa (job #433045) | Cod sursa (job #2103797) | Cod sursa (job #244956) | Cod sursa (job #476956) | Cod sursa (job #1250064)
#include <fstream>
#include <queue>
using namespace std;
#define base 255
#define BUCKET_SIZE 8
#define N_MAX 10000000
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
unsigned int v[N_MAX + 1];
queue <unsigned int>bucket[256];
int main()
{
long long n;
int a, b, c;
fin >> n >> a >> b >> c;
v[1] = b;
for (long long i = 2; i <= n; i++)
{
v[i] = ((long long)a*v[i - 1]+b) % c;
}
int k = 0;
for (k; k < 32; k +=BUCKET_SIZE)
{
long long poz = 1;
for (long long i = 1; i <= n; i++)
{
bucket[(v[i]>> (k))&base].push(v[i]);
}
for (int i = 0; i <= base; i++)
{
while (!bucket[i].empty())
{
v[poz] = bucket[i].front();
bucket[i].pop();
poz++;
}
}
}
for (long long i = 1; i <= n; i+=10)
{
fout << v[i] << ' ';
}
}