Pagini recente » Cod sursa (job #1322896) | Cod sursa (job #726592) | Cod sursa (job #2816689) | Cod sursa (job #65805) | Cod sursa (job #1117733)
#include<fstream>
#include<queue>
#define maxn 10000007
using namespace std;
ifstream fi("radixsort.in");
ofstream fo("radixsort.out");
long long i,n,a,b,c;
long long maxv,p=1;
queue <int> q[10];
int v[maxn];
//Radix-Sort, (LSD) Least Significant Digit
void radix_sort(int p){
int i,j=0;
for(i=1;i<=n;i++) q[(v[i]/p)%10].push(v[i]);
for(i=0;i<=9;i++)
while(q[i].size()){
v[++j]=q[i].front();
q[i].pop();
}
}
int main(){
fi>>n>>a>>b>>c;
v[1]=b; maxv=v[1];
for(i=2;i<=n;i++){
v[i]=(a*v[i-1]+b)%c;
if(v[i]>maxv) maxv=v[i];
}
while(maxv){
radix_sort(p);
p*=10;
maxv/=10;
}
for(i=1;i<=n;i+=10) fo<<v[i]<<" ";
fi.close();
fo.close();
return 0;
}