Lista de probleme 117

Filtrare

Se dă un număr natural n. Construiți un șir format din primele 2n numere naturale, dispuse astfel:

  • se pleacă de la șirul 1 2
  • exact la mijlocul acestui șir se inserează șirul 3 4 și se obține 1 3 4 2
  • exact la mijlocul acestui șir se inserează șirul 5 6 7 8 și se obține 1 3 5 6 7 8 4 2
  • etc
  • în general, la mijlocul șirului format din primele 2k numere naturale se inserează șirul ordonat format din următoarele 2k numere naturale.

Scrieți definiția completă a subprogramului recursiv F, care primește prin intermediul parametrului n un număr natural nenul (1≤n≤9), iar prin intermediul parametrului a, un tablou unidimensional care conţine n valori naturale, fiecare dintre acestea reprezentând câte o cifră a unui număr. Astfel, a0 reprezintă prima cifră a numărului, a1 a doua cifră, etc.

Subprogramul furnizează prin parametrul k o valoare naturală egală cu numărul obţinut din cifrele pare reţinute în tabloul a sau valoarea -1 dacă în tablou nu există nicio cifră pară.

Se consideră un număr suficient de mare de monede de dimensiuni egale pentru a construi din ele turnuri pe baza următoarelor reguli:

  • cel mai înalt turn are înălțimea de n monede , cel mai mic are înălțimea 1 (o monedă);
  • turnurile se așează în linie unul lângă altul, astfel încât între oricare două turnuri de aceeași înălțime să existe cel puțin un turn mai înalt decât acestea două.

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.

#824 CifMaxRec C++

Să se scrie o funcție C++ recursivă care să returneze cifra maximă a unui număr natural transmis ca parametru.

Se dă un număr natural n. Să se genereze, în ordine lexicografică, toate șirurile de cifre binare de lungime n.

#825 CifMinRec C++

Să se scrie o funcție C++ recursivă care să returneze cifra minimă a unui număr natural transmis ca parametru.

Să se scrie o funcție C++ recursivă care să determine cifra maximă și cifra minimă a unui număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieșire.

De-a lungul bulevardului sunt n copaci, numerotați de la 1 la n, pentru fiecare cunoscându-se înălțimea, exprimată în centimetri. Primarul dorește să taie copacii și apelează la un vrăjitor care va proceda astfel: alege o secvență cât mai lungă de copaci învecinați și aplică o vrajă prin care toți înălțimea tuturor copacilor din secvență scade cu o aceeași valoare, strict pozitivă. Să se determine care este numărul minim de vrăji care trebuie aplicate astfel încât toți copacii să aibă înălțime zero.

Să se scrie o funcție C++ recursivă care să returneze cea mai mică cifră pară a unui număr natural transmis ca parametru.