Pagini recente » Cod sursa (job #2131944) | Cod sursa (job #1834466) | Cod sursa (job #1493527) | Cod sursa (job #1597874) | Cod sursa (job #1821962)
#include <cstdio>
#include <vector>
using namespace std;
vector <int> d[65540];
int a,b,c,n,p,p1,x,i,j,nr,v[10000004],k;
long long y;
int main()
{
freopen ("radixsort.in","r",stdin);
freopen ("radixsort.out","w",stdout);
scanf ("%d %d %d %d", &n, &a, &b, &c);
v[1]=b;
for (i=2;i<=n;i++)
{
y=(1LL*a*v[i-1]+b)%c;
v[i]=y;
}
for (i=1;i<=n;i++)
d[v[i]%65536].push_back(v[i]);
x=d[0].size();
nr=0;
for (i=0;i<=65535;i++)
{
k=d[i].size();
for (j=0;j<=(k-1);j++)
v[++nr]=d[i][j];
d[i].clear();
}
for (i=1;i<=n;i++)
d[v[i]/65536].push_back(v[i]);
x=d[0].size();
nr=0;
for (i=0;i<=65535;i++)
{
k=d[i].size();
for (j=0;j<=(k-1);j++)
v[++nr]=d[i][j];
d[i].clear();
}
for (i=1;i<=n;i+=10)
printf ("%d ", v[i]);
return 0;
}