Pagini recente » Cod sursa (job #1928797) | Cod sursa (job #2330354) | Cod sursa (job #1520186) | Cod sursa (job #3153431) | Cod sursa (job #2490731)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n,maxim,A,B,C;
int v[1000005],aux[1000005],f[10];
void counting(int putere){
memset(f,0,sizeof(f));
for(int i=0;i<n;i++){
int h=v[i]/putere%10;
f[h]++;
}
for(int i=1;i<10;i++){
f[i]+=f[i-1];
}
for(int i=n-1;i>=0;i--){
int h=v[i]/putere%10;
aux[f[h]-1]=v[i];
f[h]--;
}
for(int i=0;i<n;i++){
v[i]=aux[i];
}
return ;
}
int main(){
fin>>n>>A>>B>>C;
maxim=v[0]=B;
for(int i=1;i<n;i++){
v[i]=(A*v[i-1] +B)%C;
maxim=max(maxim,v[i]);
}
int pow=1;
while(pow<=maxim){
counting(pow);
pow*=10;
}
for(int i=0;i<n;i+=10){
fout<<v[i]<<" ";
}
return 0;
}