Pagini recente » Cod sursa (job #2355808) | Cod sursa (job #2194066) | Cod sursa (job #1157729) | Cod sursa (job #2192720) | Cod sursa (job #2192669)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n,a,b,c;
vector<unsigned int>elem,bucket[10];
int main()
{
fin>>n>>a>>b>>c;
elem.push_back(b);
int mx=b;
for(int i=1;i<n;i++)
{
elem.push_back((a*elem[i-1]+b)%c);
if(elem[i]>mx)
mx=elem[i];
}
int counter=0;
while(mx>0)
{
counter++;
mx/=10;
}
long long t=1;
for(int p=1;p<=counter;p++)
{
for(int i=0;i<n;i++)
{
if(elem[i]/t==0)
{
bucket[0].push_back(elem[i]);
continue;
}
bucket[(elem[i]/t)%10].push_back(elem[i]);
}
int cou=0;
for(int j=0;j<=9;j++)
{
for(int g=0;g<bucket[j].size();g++)
{
elem[cou]=bucket[j][g];
cou++;
}
bucket[j].clear();
}
t*=10;
}
int pos=0;
while(pos<n)
{
fout<<elem[pos]<<" ";
pos+=10;
}
return 0;
}