Rezolvare completă PbInfo #867 Generare2_cu_Coada

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

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Generare2_cu_Coada:

#include <iostream>
using namespace std;

int n,a,x,y,v[1000005],q[1000005];

void generare(int a)
{
    int st = 1 , dr = 1;
    q[1] = a, v[a] =1;
    while(st <= dr)
    {
        int k = q[st];
        if(v[k+x] == 0)
            v[k + x] = 1 , q[++dr ] = k + x;
        if(v[k + y] == 0)
            v[k + y] = 1 , q[++dr ] = k + y;
        st ++;
    }
}

int main(){
    cin >> n >> a >> x >> y;
    generare(a);
    for(int i = 0 ; i <= n ; i ++)
        if(v[i] == 1)
            cout << i << " ";
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #867 Generare2_cu_Coada

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #867 Generare2_cu_Coada de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!