Pagini recente » Cod sursa (job #1125600) | Cod sursa (job #2317198) | Cod sursa (job #1399843) | Cod sursa (job #2697895) | Cod sursa (job #1146105)
#include <iostream>
#include <cstdio>
#include <vector>
#define Nmax 10000010
using namespace std;
int N,A,B,C;
int V[Nmax];
vector <int> Lista[260];
void Formare()
{
V[1]=B;
for(int i=2;i<=N;++i)
V[i]=(A*V[i-1]+B)%C;
}
void Creare(int Nr)
{
for(int i=1;i<=N;++i)
Lista[255 & V[i]>>Nr].push_back(V[i]);
}
void Copiere()
{
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);
Copiere();
}
Afisare();
return 0;
}