Pagini recente » Cod sursa (job #1629120) | Cod sursa (job #2326826) | Cod sursa (job #1655697) | Cod sursa (job #794264) | Cod sursa (job #2618938)
#include <iostream>
#include <vector>
#include <fstream>
#include <list>
#include <cmath>
using namespace std;
void radixsort(vector<int> &v)
{
int i,j,p,k,r,maxi,cifmax;
list<int>bucket[10];
maxi = cifmax = 0;
for(i=0; i<v.size(); i++)
if(v[i] > maxi)
maxi = v[i];
while(maxi)
{
cifmax+=1;
maxi/=10;
}
for(i=0; i<cifmax; i++)
{
k = ceil(pow(10,i+1));
p = ceil(pow(10,i));
for(j=0; j<v.size(); j++)
{
r = (v[j]%k)/p;
bucket[r].push_back(v[j]);
}
v.clear();
for(j=0; j<10; j++)
if(bucket[j].size())
{
v.insert(v.end(),bucket[j].begin(),bucket[j].end());
bucket[j].clear();
}
}
}
int main()
{
int n, a, b, c;
vector<int> v;
ifstream f("radixsort.in");
f>>n>>a>>b>>c;
f.close();
v.push_back(b);
for(int i=1; i<n; i++)
v.push_back((a*v[i-1]+b)%c);
radixsort(v);
ofstream g("radixsort.out");
for(int i=0; i<n; i+=10)
g<<v[i]<<' ';
g.close();
return 0;
}