Pagini recente » Cod sursa (job #1467168) | Cod sursa (job #1002357) | Cod sursa (job #920189) | Cod sursa (job #291326) | Cod sursa (job #1369780)
#include<fstream>
//#include<cstdlib>
//#include<ctime>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int aa, bb, cc, a[2][10000009], pr[10], ul[10], n, i, nr[10], cif, p, p1, k, x;
int main()
{
//srand(time(0));
fin>>n>>aa>>bb>>cc;
p=1;
a[0][1]=bb;
nr[bb/p%10]++;
for(i=2;i<=n;i++)
{
//a[0][i]=rand()%1000;
//cout<<a[0][i]<<" ";
a[0][i]=(aa*a[0][i-1]+bb)%cc;
nr[a[0][i]/p%10]++;
}
//cout<<"\n";
pr[0]=1;
ul[0]=0;
for(i=1;i<=9;i++)
{
pr[i]=pr[i-1]+nr[i-1];
ul[i]=pr[i]-1;
nr[i-1]=0;
}
nr[9]=0;
for(k=1;k<=10;k++)
{
p1=p*10;
for(i=1;i<=n;i++)
{
x=a[1-k%2][i];
cif=x/p%10;
ul[cif]++;
a[k%2][ul[cif]]=x;
//cout<<x<<" ";
nr[x/p1%10]++;
}
//cout<<"\n";
pr[0]=1;
ul[0]=0;
for(i=1;i<=9;i++)
{
pr[i]=pr[i-1]+nr[i-1];
ul[i]=pr[i]-1;
nr[i-1]=0;
}
nr[9]=0;
p=p1;
}
for(i=1;i<=n;i=i+10)
{
fout<<a[0][i]<<" ";
}
fout<<"\n";
fout.close();
fin.close();
return 0;
}