Pagini recente » Cod sursa (job #1535395) | Cod sursa (job #2145561) | Cod sursa (job #1370327) | Cod sursa (job #219442) | Cod sursa (job #1218783)
#include <cstdio>
#include <vector>
#define MASK 255
using namespace std;
int v[10000005],N,A,B,C;
void read( void )
{
scanf("%d%d%d%d",&N,&A,&B,&C);
v[1] = B;
for(int i = 2; i <= N; ++i)
v[i] = (1LL*A*v[i-1] + B) % C;
}
void sparge(int k)
{
int pz = 0;
vector<int> bucket[MASK+2];
for(int i = 1; i <= N; ++i)
bucket[(v[i]>>k)&MASK].push_back(v[i]);
for(int i = 0; i <= MASK; ++i)
for(vector<int>::iterator it = bucket[i].begin(); it != bucket[i].end(); ++it)
v[++pz] = *it;
}
int main()
{
freopen("radix.in","r",stdin);
freopen("radix.out","w",stdout);
read();
for(int i = 0; i <= 3; ++i)
sparge(8*i);
for(int i = 1; i <= N; i += 10)
printf("%d ",v[i]);
return 0;
}