Pagini recente » Cod sursa (job #1491637) | Cod sursa (job #206030) | Cod sursa (job #1698580) | Cod sursa (job #361761) | Cod sursa (job #2759885)
#include <bits/stdc++.h>
#define ui unsigned int
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
vector<ui> radix(vector<ui> a)
{
//i know, many magic numbers
ui comp=1,mod=8;
for(int b=0; b<4; b++)
{
vector<ui> buckets[256];
comp=(comp<<mod);
if(b==0) comp--;
for(int i=0; i<a.size(); i++)
{
//cout<<((a[i]&comp)>>(mod*b))<<' '<<comp<<' '<<mod<<'\n';
buckets[(a[i]&comp)>>(mod*b)].push_back(a[i]);
}
ui k=0;
for(int i=0; i<=(comp>>(mod*b)); i++)
{
for(int j=0; j<buckets[i].size(); j++)
{
a[k]=buckets[i][j];
k++;
}
}
}
return a;
}
int main()
{
ui n,a,b,c,nr;
vector<ui> v;
f>>n>>a>>b>>c;
nr=b;
for(int i=0; i<n; i++)
{
nr=(a*nr+b)%c;
v.push_back(nr);
}
v=radix(v);
//for(int i=0; i<n; i++)
//{
//g<<v[i]<<' ';
//}
//g<<'\n';
for(int i=0; i<n; i++)
{
if(i%10==0)g<<v[i]<<' ';
}
return 0;
}