343
Enunțul acestei probleme este identic cu cel al problemei #Generare2 . Vă recomandăm să o rezolvați folosind o structură de date de tip coadă.
Cerința
Se dau patru numere naturale n a x y. Să se afișeze elementele mulțimii M, cu următoarele proprietăți:
- toate elementele lui
Msunt numere naturale mai mici sau egale cun; ase află înM;- dacă
bse află înM, atuncib+xșib+yse află înM.
Date de intrare
Programul citește de la tastatură numerele n a x y.
Date de ieșire
Programul va afișa pe ecran elementele mulțimii M, în ordine crescătoare, separate prin câte un spațiu.
Restricții și precizări
1 ≤ n ≤ 100001 ≤ x , y ≤ 100000 ≤ a ≤ 10000
Exemplu
Intrare
25 3 4 11
Ieșire
3 7 11 14 15 18 19 22 23 25
#include <bits/stdc++.h>
using namespace std;
int n, x, y;
bool apartine[1 + 10000] ;
void genereaza(int b)
{
if (b <= n && !apartine[b])
{
apartine[b] = true;
genereaza(b + x);
genereaza(b + y);
}
}
int main()
{
int a;
cin >> n >> a >> x >> y;
genereaza(a);
for (int i = 0; i <= n; i++)
if (apartine[i])
cout << i <<" ";
return 0;
}
Comentarii