Pagini recente » Cod sursa (job #1756578) | Cod sursa (job #913430) | Cod sursa (job #744167) | Cod sursa (job #1047111) | Cod sursa (job #1996122)
#include <fstream>
#include <queue>
using namespace std;
ifstream is("radixsort.in");
ofstream os("radixsort.out");
int n, cnt;
unsigned int A, B, C;
unsigned int v[10000001];
queue<unsigned int> b[256];
int main()
{
is >> n >> A >> B >> C;
is.close();
v[1] = B;
for (int i = 2; i <= n; ++i)
v[i] = (1LL * A * v[i - 1] + B) % C;
for (short key = 0; 1 << key <= C; key += 8)
{
for (int i = 1; i <= n; ++i)
b[(v[i] >> key) & 255].push(v[i]);
cnt = 0;
for (int i = 0; i <= 255 && cnt < n; ++i)
while (!b[i].empty())
{
v[++cnt] = b[i].front();
b[i].pop();
}
}
for (int i = 1; i <= n; i += 10)
os << v[i] << " ";
os.close();
return 0;
}