Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

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


rossetta: recursiv sau cu coada ?
Utilizator anonim: recursiv
rossetta: ok
Utilizator anonim: toate problemele pe care le am pus sunt recursive
Utilizator anonim: unele au o cerinta atat de mare incat imi este si frica sa le postez aici:)))

Răspunsuri la întrebare

Răspuns de rossetta
2
#include <iostream>

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;
}


Alte întrebări interesante