Pagini recente » Cod sursa (job #1823206) | Cod sursa (job #2394825) | Cod sursa (job #872113) | Cod sursa (job #741638) | Cod sursa (job #1129770)
#include <cstdio>
#include <vector>
#include <queue>
#define nmax 10000000+5
using namespace std;
queue<int> cozi[5];
int v[nmax];
int l[5];
int N, A, B, C;
void parcurgereCozi(int p)
{
int i, j;
for (i = 0; i <= 1; i++)
l[i] = cozi[i].size();
for (i = 0; i <= 1; i++)
{
for (j = 0; j < l[i]; j++)
{
cozi[(cozi[i].front()&(1<<p))!=0].push(cozi[i].front());
cozi[i].pop();
}
}
}
int main()
{
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
int i, j;
scanf("%d%d%d%d", &N, &A, &B, &C);
for (i = 1; i <= N; i++)
{
if (v[i] == 1)
v[i] = B;
else
v[i] = (A * v[i-1] + B) % C;
cozi[0].push(v[i]);
}
for (i = 0; i < 31; i++)
parcurgereCozi(i);
j = 0;
for (i = 0; i <= 1; i++)
while (!cozi[i].empty())
{
++j;
if ((j-1)%10 == 0)
printf("%d ", cozi[i].front());
cozi[i].pop();
}
printf("\n");
return 0;
}