Pagini recente » Cod sursa (job #746076) | Cod sursa (job #2885347) | Cod sursa (job #2689864) | Cod sursa (job #1696568) | Cod sursa (job #3223056)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout ("radixsort.out");
int v[2][1000005], cnt[10];
int cif_count (int nr)
{
int cnt=0;
while (nr) {
cnt++;
nr/=10;
}
return cnt;
}
int radix_sort(int n, int maxi)
{
int iter=cif_count(maxi);
int imper=1;
for (int q=1; q<=iter; q++) {
for (int i=1; i<=n; i++) {
int digit=(v[(q-1)&1][i]/imper)%10;
cnt[digit]++;
}
for (int i=0; i<=9; i++) {
cnt[i]+=cnt[i-1];
}
for (int i=n; i>=1; i--) {
int digit=(v[(q-1)&1][i]/imper)%10;
v[q&1][cnt[digit]]=v[(q-1)&1][i];
cnt[digit]--;
}
for (int i=0; i<=9; i++) {
cnt[i]=0;
}
imper*=10;
}
return iter;
}
int main()
{
int n, a, b, c, maxi=-1; fin>>n>>a>>b>>c;
v[0][1]=b;
for (int i=1; i<=n; i++) {
v[0][i]=(a*v[0][i-1]+b)%c;
maxi=max(v[0][i], maxi);
}
int iter=radix_sort(n, maxi);
for (int i=1; i<=n; i+=10) {
fout<<v[(iter&1)][i]<<' ';
}
return 0;
}