Pagini recente » Cod sursa (job #264345) | Cod sursa (job #568464) | Cod sursa (job #1773050) | Cod sursa (job #952933) | Cod sursa (job #1394566)
#include<fstream>
using namespace std;
int a[2][10000002],n,cif[10],pstart[10],poz[10],i,A,B,C,in,out,k,x,r;
long long z;
int main ()
{
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
fin>>n>>A>>B>>C;
a[0][1]=B;
for(i=2;i<=n;i++)
{
a[0][i]=(A*a[0][i-1]+B)%C;
}
in=1;
out=0;
z=1;
for(k=1;k<=9;k++)
{
in=1-in;
out=1-out;
for(i=0;i<=9;i++)
{
cif[i]=0;
}
for(i=1;i<=n;i++)
{
x=a[in][i];
r=(x/z)%10;
cif[r]++;
}
pstart[0]=1;
poz[0]=1;
for(i=1;i<=9;i++)
{
pstart[i]=pstart[i-1]+cif[i-1];
poz[i]=pstart[i];
}
for(i=1;i<=n;i++)
{
x=a[in][i];
r=(x/z)%10;
a[out][poz[r]]=x;
poz[r]++;
}
z=z*10;
}
for(i=1;i<=n;i=i+10)
{
fout<<a[out][i]<<" ";
}
fin.close();
fout.close();
return 0;
}