Pagini recente » Cod sursa (job #1071780) | Cod sursa (job #1867748) | Cod sursa (job #2103515) | Cod sursa (job #931052) | Cod sursa (job #1152131)
#include <fstream>
#include <vector>
#include <cstring>
const int NMAX = 10000005;
const int mask = 0xff;
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int N,A,B,C,v[NMAX],pos;
vector <int> bucket[mask+1];
void radix(int part)
{
memset(bucket, 0, sizeof(bucket));
for (int i = 1; i <= N; ++i)
{
bucket[ (v[i] >> part) % mask ].push_back(v[i]);
}
pos = 0;
for (int i = 0; i <= mask; ++i)
{
for (int j = 0; j < bucket[i].size(); ++j)
{
v[++pos] = bucket[i][j];
}
}
}
void solve()
{
for (int i = 0; i < 4; ++i)
{
radix( i * 8 );
}
}
int main()
{
f >> N >> A >> B >> C;
v[1] = B;
for (int i = 2; i <= N; ++i)
{
v[i] = (1LL * A * v[i-1] + B) % C;
}
solve();
for (int i =1; i <= N; i+=10)
{
g << v[i] << " ";
}
f.close();
g.close();
return 0;
}