Pagini recente » Cod sursa (job #1976309) | Cod sursa (job #2881999) | Cod sursa (job #626999) | Cod sursa (job #2420789) | Cod sursa (job #2306298)
#include <cstdio>
#include <cstring>
#include <fstream>
#define nmax 10000005
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int v[nmax], k[nmax];
int n, a, b, c , p[1030];
int base;
inline int rest(const int &e)
{
return (e>>(base*10))&((1<<10)-1);
}
int main()
{
int i, j;
f>>n>>a>>b>>c;
v[1] = b;
for (i = 2; i<= n; i++)
v[i] = (a* v[i-1]+b) %c;
base = 0;
while (base <=2) {
memset(p, 0, sizeof(p));
for (i = 1; i <= n; i++)
p[rest(v[i])]++;
for (i = 1; i <= 1023; i++)
p[i] += p[i-1];
for (i = 1; i <= n; i++)
k[p[rest(v[i])]--]=v[i];
for (i=1;i<=n;i++)
v[i]=k[i];
base++;
}
for (i=1;i<=n;i+=10)
g<<v[i]<<' ';
return 0;
}