Pagini recente » Cod sursa (job #11966) | Cod sursa (job #2180695) | Cod sursa (job #939068) | Cod sursa (job #3246114) | Cod sursa (job #2550418)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
void radixSort(vector <long long> &ans, long long base)
{
int n = ans.size();
vector <long long> bucket[base];
if (n != 0)
{
long long mod = 1;
while (true)
{
bool next = 0;
for (int i = 0; i < n; i ++)
{
bucket[(ans[i]/mod)%base].push_back(ans[i]);
if (ans[i]/mod != 0)
next = 1;
}
int poz = 0;
for(int i = 0; i < base; i++)
{
int m = bucket[i].size();
for(int j = 0; j < m; j++)
{
ans[poz] = bucket[i][j];
poz ++ ;
}
bucket[i].clear();
}
if (next == 0) break;
mod *= base;
}
}
}
int main()
{
ifstream f("radixsort.in");
ofstream g("radixsort.out");
long long n,a,b,c;
long long nr;
vector <long long> v;
f >> n >> a >> b >> c;
v.push_back(b);
for (int i = 1; i <= n-1;i ++)
{
nr = a * v[i- 1] + b;
nr %= c;
v.push_back(nr);
}
radixSort(v, 256);
for (int i = 0; i < n; i+= 10)
{
g << v[i] <<" ";
}
f.close();
g.close();
return 0;
}