fbpx

Problema #830 – Generare2 – Rezolvari PBInfo

de Mihai-Alexandru

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 M sunt numere naturale mai mici sau egale cu n;
  • a se află în M;
  • dacă b se află în M, atunci b+x și b+y se află în M.

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 ≤ 10000
  • 1 ≤ x , y ≤ 10000
  • 0 ≤ 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;

const int MAX_N = 10000;

int n, x, y;
bool apartine[1 + MAX_N] ;

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

S-ar putea sa iti placa