Pagini recente » Cod sursa (job #3202815) | Cod sursa (job #542198) | Cod sursa (job #647115) | Cod sursa (job #1451062) | Cod sursa (job #3259359)
#include <fstream>
#include <algorithm>
#define NMAX 10000002
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int v[NMAX],rez[NMAX],vmax;
long long N,A,B,C,X;
void sortare(int poz)
{
int cifre[11];
for(int i=0; i<=10; i++)
{
cifre[i]=0;
}
for(int i=1; i<=N; i++)
{
cifre[(v[i]/poz)%10]++;
}
for(int i=1; i<10; i++)
{
cifre[i]+=cifre[i-1];
}
for(int i=N; i>=1; i--)
{
rez[cifre[(v[i]/poz)%10]]=v[i];
cifre[(v[i]/poz)%10]--;
}
for(int i=1; i<=N; i++)
{
v[i]=rez[i];
}
}
void afisare()
{
for(int i=1; i<=N; i=i+10)
{
fout<< v[i] << " ";
}
fout<< "\n";
}
int main()
{
fin>>N>>A>>B>>C;
X=B;
v[1]=X;
vmax=v[1];
for(int i=2; i<=N; i++)
{
X=(A*X+B)%C;
v[i]=X;
vmax=max(vmax,v[i]);
}
for(int i=1; vmax/i>0; i=i*10)
{
sortare(i);
}
afisare();
return 0;
}