Pagini recente » Cod sursa (job #983632) | Cod sursa (job #1079276) | Cod sursa (job #3270845) | Cod sursa (job #2598989) | Cod sursa (job #2195461)
#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
struct nod{int val; nod* V[256];};
int n, a, b, c;
nod* tata;
void Add(nod* node, int x, int nr)
{
if (nr==-1)
{
node->val++;
return;
}
int b = (x>>(8*nr))%256;
if (node->V[b]==NULL)
node->V[b] = new nod();
Add(node->V[b], x, nr-1);
}
int trb=1;
void DFS(nod* node, int lvl, int x)
{
if (lvl==-1)
{
for(int i=1; i<=node->val; i++)
{
if (trb%10==1)
cout<<(x>>8)<<" ";
trb++;
}
}
for (int i=0; i<=255; i++)
{
if (node->V[i]!=NULL)
DFS(node->V[i], lvl-1, (x+i)<<8);
}
}
int main()
{
//freopen("radixsort.in", "r", stdin);
//freopen("radixsort.out", "w", stdout);
cin>>n>>a>>b>>c;
tata = new nod();
int x=b;
Add(tata, x, 3);
for (int i=2; i<=n; i++)
{
x=(a*x+b)%c;
Add(tata, x, 3);
}
DFS(tata, 3, 0);
return 0;
}