Pagini recente » Cod sursa (job #1326099) | Cod sursa (job #533239) | Rating Andrei (Marian142) | Cod sursa (job #1541942) | Cod sursa (job #2174455)
#include <fstream>
#define nmax 10001*1001*10
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int v[nmax];
int getmax(int v[],int n){
int i,mmax=v[0];
for(i=1;i<n;i++) if(v[i]>mmax)
mmax=v[i];
return mmax;
}
void cs(int v[],int n,int exp){
int a[n],i,c[10]={0,0,0,0,0,0,0,0,0,0};
for(i=0;i<n;i++)
c[(v[i]/exp)%10]++;
for(i=1;i<10;i++) c[i]+=c[i-1];
for(i=n-1;i>=0;i--){
a[c[(v[i]/exp)%10]-1]=v[i];
c[(v[i]/exp)%10]--;
}
for(i=0;i<n;i++) v[i]=a[i];
}
void rs(int v[],int n){
int exp,m;
m=getmax(v,n);
for(exp=1;m/exp>0;exp*=10)
{
cs(v,n,exp);
}
}
int main()
{int n,i,a,b,c;
f>>n>>a>>b>>c;
v[0]=b;
for(i=1;i<n;i++){
long long d=(a*v[i-1]+b)%c;
int e=(int)d;
v[i]=e;
}
rs(v,n);
for(i=0;i<n;i+=10) g<<v[i]<<" ";
return 0;
}