Pagini recente » Cod sursa (job #2848848) | Cod sursa (job #255074) | Cod sursa (job #1933966) | Cod sursa (job #1362170) | Cod sursa (job #1552255)
#include <bits/stdc++.h>
using namespace std;
int v[10000005];
int va[10000005];
int q[10];
int main()
{
int i,n,A,B,C,mm,c,cnt,m;
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
scanf("%d %d %d %d",&n,&A,&B,&C);
v[1] = B%C;
for(i = 2;i <= n;i++){
v[i] = (1LL*A*v[i-1]+B)%C;
}
m = 10;
mm = 1;
while(m <= 1e9){
for(i = 1;i <= n;i++){
c = (v[i]%m)/mm;
q[c]++;
}
for(i = 1;i <= 9;i++){
q[i] += q[i-1];
}
for(i = n;i >= 1;i--){
c = (v[i]%m)/mm;
va[q[c]] = v[i];
q[c]--;
}
for(i = 1;i <= n;i++){
v[i] = va[i];
}
for(i = 0;i <= 9;i++){
q[i] = 0;
}
m *= 10;
mm *= 10;
}
for(i = 1;i <= n;i += 10){
printf("%d ",v[i]);
}
return 0;
}