Pagini recente » Cod sursa (job #663213) | Cod sursa (job #1113229) | Cod sursa (job #2470624) | Cod sursa (job #1283717) | Cod sursa (job #3309475)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
const int MAX=1e7;
long long A,B,C,D;
int n,nr,v[MAX+5],i,f[15],aux[MAX+5],cif;
void CountingSort(int exp)
{
int i;
for (i=1; i<=n; i++)
f[v[i]/exp%10]++;
for (i=1; i<10; i++)
f[i]+=f[i-1];
for (i=n; i>=1; i--)
{
cif=v[i]/exp%10;
aux[f[cif]]=v[i];
f[cif]--;
}
for (i=1; i<=n; i++)
v[i]=aux[i];
for (i=0; i<10; i++)
f[i]=0;
}
void RadixSort()
{
int mx=0,i,exp=1;
for (i=1; i<=n; i++)
mx=max(mx,v[i]);
while (mx>0)
{
CountingSort(exp);
mx/=10;
exp*=10;
}
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0); fout.tie(0);
fin>>n>>A>>B>>C;
v[1]=B;
for (i=2; i<=n; i++)
{
D=v[i-1];
v[i]=(A*D+B)%C;
}
RadixSort();
for (i=1; i<=n; i+=10)
fout<<v[i]<<" ";
return 0;
}