Pagini recente » Cod sursa (job #2229520) | Cod sursa (job #2963280) | Cod sursa (job #956367) | Cod sursa (job #1545586) | Cod sursa (job #2758339)
#include <fstream>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
long int N, A, B, C;
int v[10000000];
short int base = 256;
//rearanjam numerele generate
void Radix_Sort(int v[], int n, short int base = 256)
{
int c[base], aux[n];
for(int i = 0; i < 32; i += 8)
{
for(int j = 0; j < 256; j++)
c[j] = 0;
for(int j = 0; j < n; j++)
c[(v[j] >> i) & 255] ++;
for(int j = 1; j < 256; j++)
c[j] += c[j - 1];
for (int j = n - 1; j >= 0; j--)
{
c[(v[j] >> i) & 255] --;
aux[c[(v[j] >> i) & 255]] = v[j];
}
for(int j = 0; j < n; j++)
v[j] = aux[j];
}
}
int main()
{
f>>N>>A>>B>>C;
v[1]=B;
//generam nr dupa formula
for(int i=2; i<=N; i++)
v[i]=((A*v[i-1])+B)%C;
Radix_Sort(v,N+1);
for(int i=1; i<=N; i+=10)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
}