Pagini recente » Cod sursa (job #3218740) | Cod sursa (job #322017) | Cod sursa (job #2145547) | Cod sursa (job #469271) | Cod sursa (job #1702348)
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
ifstream si("radixsort.in");
ofstream so("radixsort.out");
const int NMAX=10000005;
int v[260];
int x[NMAX];
int rez[NMAX];
inline int grupa(int i,int octdeja)
{
return (x[i]>>(8*octdeja))&255;
}
void radixsort(int octdeja,int n)
{
int i;
for(i=0;i<256;++i)
v[i]=0;
for(i=1;i<=n;++i)
{
++v[grupa(i,octdeja)];
}
for(i=1;i<256;++i)
{
v[i]+=v[i-1];
}
for(i=n;i;--i)
{
rez[v[grupa(i,octdeja)]]=x[i];
v[grupa(i,octdeja)]--;
}
for(i=1;i<=n;++i)
{
x[i]=rez[i];
}
}
int main()
{
int n,k,m,p;
si>>n>>k>>m>>p;
k%=p;
m%=p;
x[1]=m;
int i;
for(i=2;i<=n;++i)
{
x[i]=(1LL*x[i-1]*k+m)%p;
}
for(i=0;i<4;++i)
{
radixsort(i,n);
}
for(int j=1;j<=n;j+=10)
so<<x[j]<<' ';
so<<'\n';
so.close();
return 0;
}