Pagini recente » Cod sursa (job #3208811) | Cod sursa (job #896419) | Cod sursa (job #2061723) | Cod sursa (job #1106839) | Cod sursa (job #1821082)
#include <cstdio>
#include <vector>
using namespace std;
vector <int> d[20];
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;
}
p=16;
p1=1;
while (x<n)
{
for (i=1;i<=n;i++)
d[v[i]%p/p1].push_back(v[i]);
x=d[0].size();
nr=0;
for (i=0;i<=15;i++)
{
k=d[i].size();
for (j=0;j<=(k-1);j++)
v[++nr]=d[i][j];
d[i].clear();
}
if (p==268435456)
break;
p*=16;
p1*=16;
}
for (i=1;i<=n;i+=10)
printf ("%d ", v[i]);
return 0;
}