Pagini recente » Cod sursa (job #3285282) | Cod sursa (job #2888084) | Cod sursa (job #1963411) | Cod sursa (job #186961) | Cod sursa (job #1315818)
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
#define NMAX 10000007
deque < int > H[10];
deque < int > :: iterator f;
int N,A,B,C,i,t,shift;
int V[NMAX];
int main()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d%d%d%d",&N,&A,&B,&C);
for (i=2,V[1]=B;i<=N;++i)
V[i]=(1LL*A*V[i-1]+B)%C;
for (shift=t=1;t<=10;++t)
{
for (i=1;i<=N;++i)
H[(V[i]/shift)%10].push_back(V[i]);
V[0]=0;
for (i=0;i<=9;++i)
for (f=H[i].begin();f!=H[i].end();++f)
V[++V[0]]=*f;
for (i=0;i<=9;++i)
while (!H[i].empty()) H[i].pop_back();
shift*=10;
}
for (i=1;i<=V[0];i+=10)
printf("%d ",V[i]);
return 0;
}