Pagini recente » Cod sursa (job #1883913) | Cod sursa (job #1437456) | Cod sursa (job #630933) | Cod sursa (job #2023428) | Cod sursa (job #2390489)
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
FILE * fin=fopen("radixsort.in","r");
FILE * fout=fopen("radixsort.out","w");
int n, a, b, c, cif, nr, maxim, v[10000005];
long long p;
vector<int> A[300];
int main()
{
int i, j, k;
fscanf(fin,"%d %d %d %d",&n,&a,&b,&c);
v[1] = b;
for (i=2;i<=n;i++)
v[i] = (1ll*a*v[i-1]+b)%c;
p = 1;
for (k=0;k<4;k++)
{
p<<=8;
for (i=0;i<(1<<8);i++)
A[i].clear();
for (i=1;i<=n;i++)
{
cif = v[i]&(p-1);
cif >>= (8*k);
A[cif].pb(v[i]);
}
nr = 0;
for (i=0;i<(1<<8);i++)
for (j=0;j<A[i].size();j++)
v[++nr] = A[i][j];
}
for (i=1;i<=n;i+=10)
fprintf(fout,"%d ",v[i]);
return 0;
}