Pagini recente » Cod sursa (job #2265477) | Cod sursa (job #1365753) | Cod sursa (job #691496) | Cod sursa (job #574722) | Cod sursa (job #1309003)
#include <iostream>
#include<fstream>
using namespace std;
#define maxn 10000005
#define maxm 1000005
int n,a,b,c,v[maxn],x[maxm],y[10][maxm],z[10];
void radixsort(int o,int n)
{
int i,j,k,d=10,e=1,l,m;
for(i=1;i<=o;i++)
{
for(j=0;j<=9;j++) z[j]=0;
for(j=1;j<=n;j++)
{m=x[j]%d/e;
z[m]++;
y[m][z[m]]=x[j]; }
l=1;
for(j=0;j<=9;j++)
for(k=1;k<=z[j];k++)
{x[l]=y[j][k];l++;}
e=e*10;d=d*10;
}
}
int main()
{
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int i,j=2;
f>>n>>a>>b>>c;
v[1]=x[1]=b;
for(i=2;i<=n;i++)
{
v[i]=(a*v[i-1]+b)%c;
if(i%10==1) {x[j]=v[i]; j++;}
}
n=j-1; j=0;
while(c>0) {j++; c=c/10;}
radixsort(j,n);
for(i=1;i<=n;i++) g<<x[i]<<" ";
f.close();
g.close();
return 0;
}