Pagini recente » Cod sursa (job #2128664) | Istoria paginii utilizator/madalinporojan | Cod sursa (job #364914) | Cod sursa (job #143119) | Cod sursa (job #2966052)
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");
int n , v[10000005];
vector < int > a[12];
int main() {
int a1 , b , c;
f >> n >> a1 >> b >> c;
v[1] = b;
int maxi = 0;
for (int i = 2 ; i <= n ; i++)
v[i] = (1LL * a1 * v[i - 1] + b) % c , maxi = max (maxi , v[i]);
c = 0;
while (maxi)
c++ , maxi /= 10;
long long divider = 1;
for (int j = 1 ; j <= c ; j++)
{
for (int i = 1 ; i <= n ; i++)
{
int u = (v[i] / divider) % 10;
a[u].emplace_back (v[i]);
}
int k = 0;
for (int i = 0 ; i <= 9 ; i++)
{
for (int j = 0 ;j < a[i].size() ; j++)
{
k++;
v[k] = a[i][j];
}
a[i].clear ();
}
divider = divider * 10;
}
int k = 1;
while (k <= n)
{
g << v[k] <<" ";
k = k + 10;
}
return 0;
}