Pagini recente » Cod sursa (job #2168897) | Cod sursa (job #176922) | Cod sursa (job #2478508) | Cod sursa (job #324771) | Cod sursa (job #1410395)
#include <fstream>
#include <iostream>
#include <list>
#include <vector>
#include <iterator>
int N,A,B,C;
unsigned int v[10000000];
int main( int argc, char* argv[] )
{
std::ifstream input("radixsort.in");
std::ofstream output("radixsort.out");
input >> N >> A >> B >> C;
v[0] = B;
int max = B;
int aux1 = B;
int aux2;
int contor = 1;
std::cout << v[0] << " ";
for ( int i = 1; i <= N; ++i )
{
aux2 = ( A * aux1 + B ) % C;
std::cout << aux2 << " ";
if ( i % 10 == 0 )
{
v[contor++] = aux2;
}
aux1 = aux2;
max = ( aux1 > max ) ? aux1 : max;
}
std::cout << std::endl;
for ( int i = 0; i < contor; ++i )
{
std::cout << v[i] << " ";
}
std::cout << std::endl;
static const int BASE = 10;
std::list<int> bucket[BASE];
for ( int n = 1; max >= n; n *= BASE )
{
int k = 0;
for ( int i = 0; i < contor; i++ )
{
bucket[(v[i]/n)%BASE].push_back(v[i]);
}
for ( int i=0; i < BASE; bucket[i++].clear() )
{
for ( std::list<int>::iterator j = bucket[i].begin(); j!= bucket[i].end(); ++j )
{
v[k++] = (*j);
}
}
}
for ( int i = 0; i < contor; ++i )
{
std::cout << v[i] << " ";
}
std::cout << std::endl;
input.close();
output.close();
return 0;
}