Pagini recente » Cod sursa (job #2056918) | Monitorul de evaluare | Cod sursa (job #152074) | Cod sursa (job #127953) | Cod sursa (job #2297643)
#include<fstream>
#include<cstring>
#include<algorithm>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int maxi,i,n,a,b,c,ex,v[10000001],f[10],o[10000001];
void Radix(int ex)
{
int i;memset(f,0,sizeof(f));memset(o,0,sizeof(o));
for(i=1;i<=n;i++)f[(v[i]/ex)%10]++;
for(i=1;i<=9;i++)f[i]+=f[i-1];
for(i=n;i>=1;i--)o[f[(v[i]/ex)%10]--]=v[i];
memcpy(v,o,sizeof(v));
}
int main()
{
fin>>n>>a>>b>>c;v[1]=b;maxi=b;
for(i=2;i<=n;i++){v[i]=(a*v[i-1]+b)%c;maxi=max(maxi,v[i]);}
for(ex=1;ex<=maxi;ex*=10)Radix(ex);
for(i=1;i<=n;i+=10) fout<<v[i]<<" ";
return 0;
}