Pagini recente » Cod sursa (job #171474) | Arhiva de probleme | Rating C Iulia (iiul) | Cod sursa (job #1917464) | Cod sursa (job #1115864)
#include <fstream>
using namespace std;
int n,a,b,c,i,v[10000005],Max,p,k,nn,vv[10000005],fr[12];
int main() {
ifstream f("radixsort.in");
ofstream g("radixsort.out");
f>>n>>a>>b>>c;
v[1]=b;
Max=b;
for(i=2;i<=n;i++){
v[i]=int((long long)(a*v[i-1]+b)%c);
if(Max<v[i])
Max=v[i];
}
while(Max) {
nn++;
Max/=10;
}
p=1;
for(k=1;k<=nn;k++) {
p*=10;
for(i=0;i<=9;i++)
fr[i]=0;
for(i=n;i>=1;i--)
fr[(v[i]%p)/(p/10)]++;
for(i=1;i<=9;i++)
fr[i]+=fr[i-1];
for(i=n;i>=1;i--){
vv[fr[(v[i]%p)/(p/10)]]=v[i];
fr[(v[i]%p)/(p/10)]--;
}
for(i=1;i<=n;i++)
v[i]=vv[i];
}
for(i=1;i<=n;i+=10)
g<<v[i]<<' ';
return 0;
}