Pagini recente » Cod sursa (job #882117) | Cod sursa (job #971935) | Cod sursa (job #1638798) | Cod sursa (job #1989950) | Cod sursa (job #1512547)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
struct bucket
{
int vals[1000];
};
int index[10];
int main()
{
int N, A, B, C;
in>>N>>A>>B>>C;
int v[N], digit=10;
bucket b[10];
v[0]=B;
int maxi=v[0];
for(int i=1; i<N; ++i)
{
v[i]=(A * v[i-1] + B) % C;
if(v[i]>maxi)
maxi=v[i];
}
while(digit<maxi*10)
{
for(int i=0; i<N; ++i)
{
int dg=v[i]%digit/(digit/10);
b[dg].vals[index[dg]]=v[i];
index[dg]++;
}
int ind=0;
for(int i=0; i<10; ++i)
{
for(int j=0; j<index[i]; j++)
{
v[ind]=b[i].vals[j];
ind++;
}
index[i]=0;
}
digit*=10;
}
for(int i=0; i<N; i+=10)
out<<v[i]<<" ";
out<<"\n";
return 0;
}