Pagini recente » Cod sursa (job #1628732) | Cod sursa (job #2387141) | Cod sursa (job #296397) | Cod sursa (job #1997010) | Cod sursa (job #1668333)
#include <bits/stdc++.h>
using namespace std;
int v[10000005],n,a,b,c;
vector <int > mat[256];
void creare()
{
scanf("%d%d%d%d",&n,&a,&b,&c);
v[1]=b;
for (int i=2;i<=n;++i)
v[i]=(1LL*a*v[i-1]+b)%c;
}
void sortare(int indice1,int indice2)
{
for (int i=0;i<256;++i)
mat[i].clear();
for (int i=1;i<=n;++i)
{
int poz=v[i]<<indice2;
poz>>=indice1;
poz>>=indice2;
mat[poz].push_back(v[i]);
}
int k=0;
for (int i=0;i<=255;++i)
for (vector <int > :: iterator it=mat[i].begin();it!=mat[i].end();++it)
v[++k]=*it;
}
int main()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
creare();
for (int j=0;j<=24;j++)
sortare(j,24-j);
for (int i=1;i<=n;i+=10)
printf("%d ",v[i]);
return 0;
}