Pagini recente » Cod sursa (job #1314725) | Cod sursa (job #615037) | Cod sursa (job #424721) | Cod sursa (job #365547) | Cod sursa (job #1494476)
#include <fstream>
#include <cstdio>
#include <queue>
#define M (1 << 12)
using namespace std;
int in,j,v[10000010],n,i,k;
long long a,b,c;
queue <int> q[M];
int main()
{
freopen("radixsort.in","r",stdin);
ofstream g ("radixsort.out");
scanf("%d%lld%lld%lld",&n,&a,&b,&c);
v[1] = b;
for(i=2; i<=n; ++i)v[i] = (1LL*a* v[i-1] +b) %c;
for(in=0; in<32; in+=12)
{
for(i=1; i<=n; ++i)
q[(v[i]>>in)&(M-1)].push(v[i]);
j=0;
for(i=0;i<M;++i)
while(!q[i].empty())
{
v[++j]=q[i].front();
q[i].pop();
}
}
for(i=1; i<=n; i+=10)g<<v[i]<<" ";
return 0;
}