Pagini recente » Cod sursa (job #2311740) | Cod sursa (job #2105359) | Cod sursa (job #2476224) | Cod sursa (job #2226870) | Cod sursa (job #1302042)
#include<fstream>
long da[10],db[10];
using namespace std;
int main()
{
ifstream f("radixsort.in");
ofstream g("radixsort.out");
long e,v,a[10][20001],b[10][20001];
long i,n,A,B,c,max=-1,h=10,h2=1,y;
short x;
bool kov=1;
f>>n>>A>>B>>c;
e=B;
x=B%10;
a[x][da[x]++]=B;
for(i=2;i<=n;i++)
{
v=(A*e+B)%c;
x=v%10;
a[x][da[x]++]=v;
e=v;
if(max<v)
max=v;
}
while(max>9)
{
h*=10;
h2*=10;
if(kov)
{
for(i=0;i<10;i++)
{
for(long j=0;j<da[i];j++)
{
x=a[i][j]%h;
x=x/h2;
b[x][db[x]++]=a[i][j];
}
da[i]=0;
}
kov=0;
}
else
{
for(i=0;i<10;i++)
{
for(long j=0;j<db[i];j++)
{
x=b[i][j]%h;
x=x/h2;
a[x][da[x]++]=b[i][j];
}
db[i]=0;
}
kov=1;
}
max/=10;
}
max=0;
y=0;
h*=10;
h2*=10;
if(kov)
for(i=0;i<10;i++)
{
for(long j=0;j<da[i];j++)
if(max==y+j)
{
g<<a[i][j]<<" ";
max+=10;
}
y+=da[i];
}
else
for(i=0;i<10;i++)
{
for(long j=0;j<db[i];j++)
if(max==y+j)
{
g<<b[i][j]<<" ";
max+=10;
}
y+=db[i];
}
f.close();
g.close();
return 0;
}