Pagini recente » Cod sursa (job #2078178) | Clasament dupa rating | Diferente pentru preoni-2006/runda-3/solutii intre reviziile 18 si 19 | Cod sursa (job #1180831) | Cod sursa (job #1552249)
#include <bits/stdc++.h>
using namespace std;
int v[10000005];
vector < 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].push_back(v[i]);
}
cnt = 1;
for(i = 0;i <= 9;i++){
for(auto it : q[i]){
v[cnt] = it;
cnt++;
}
q[i].clear();
}
m *= 10;
mm *= 10;
}
for(i = 1;i <= n;i += 10){
printf("%d ",v[i]);
}
return 0;
}