Pagini recente » Cod sursa (job #1386995) | Cod sursa (job #2634120) | Cod sursa (job #2642889) | Cod sursa (job #2329037) | Cod sursa (job #1313518)
#include <iostream>
#include<fstream>
using namespace std;
#define maxn 10000007
unsigned int n,a,b,c,v[maxn],y[10][maxn],z[9];
ifstream f("radixsort.in");
ofstream g("radixsort.out");
void radixsort(unsigned int o,unsigned int n)
{
unsigned int i,j,k,d=10,e=1,l,m;
for(i=1;i<=o;i++)
{
for(j=1;j<=9;j++) z[j]=0;
l=1;
for(j=1;j<=n;j++)
{m=v[j]%d/e;
if(m==0)
{v[l]=v[j]; if(i==o&&l%10==1) g<<v[l]<<" ";l++;}
else
{z[m]++;
y[m][z[m]]=v[j]; }}
for(j=1;j<=9;j++)
for(k=1;k<=z[j];k++)
{v[l]=y[j][k];
if(i==o&&l%10==1) g<<v[l]<<" ";
l++;}
e=e*10;d=d*10;}
}
int main()
{
unsigned int i,j=0;
f>>n>>a>>b>>c;
v[1]=b%c;
for(i=2;i<=n;i++)
{
v[i]=(1LL*a*v[i-1]%c+b)%c;
}
while(c>0) {j++; c=c/10;}
radixsort(j,n);
f.close();
g.close();
return 0;
}