Pagini recente » Cod sursa (job #1952840) | Cod sursa (job #2681264) | Cod sursa (job #1124759) | Cod sursa (job #893721) | Cod sursa (job #1146110)
#include <iostream>
#include <cstdio>
#include <vector>
#define Nmax 10000010
using namespace std;
int N,A,B,C;
int V[Nmax];
void Formare()
{
V[1]=B;
for(int i=2;i<=N;++i)
V[i]=(1LL*A*V[i-1]+B)%C;
}
void Creare(int Nr)
{
vector <int> Lista[260];
for(int i=1;i<=N;++i)
Lista[255 & V[i]>>Nr].push_back(V[i]);
int c=1;
for(int i=0;i<=255;++i)
{
for(int j=0;j<Lista[i].size();++j)
V[c++]=Lista[i][j];
Lista[i].clear();
}
}
void Afisare()
{
for(int i=1;i<=N;i+=10)
printf("%d ",V[i]);
}
int main()
{
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
scanf("%d %d %d %d",&N,&A,&B,&C);
Formare();
for(int i=0,Nr=0;i<4;++i,Nr+=8)
Creare(Nr);
Afisare();
return 0;
}