Lista de probleme 5

Filtrare

Muzeu

#4845

Un tânăr pasionat de călătorii are o listă cu muzee virtuale și, pentru fiecare, câte un singur interval orar, în care acesta poate fi vizitat online, gratuit. Tânărul dispune zilnic de același interval orar pentru vizite; un muzeu este convenabil dacă poate fi vizitat online gratuit în timpul disponibil și dacă pentru vizită îi poate aloca cel puțin o oră. Muzeele din listă sunt numerotate cu valori naturale consecutive, începând cu 1, și cel puțin unul este convenabil.

Fișierul text bac.in conține cel mult 105 linii, iar pe fiecare linie câte o pereche de numere, reprezentând limitele câte unui interval orar: pe prima linie intervalul orar de care tânărul dispune zilnic, iar pe fiecare dintre următoarele linii, intervalul orar de vizitare gratuită pentru câte un muzeu, în ordinea din listă. Limitele intervalelor sunt ore fixe, numere naturale din intervalul [8,22], iar cele aflate pe aceeași linie a fișierului sunt în ordine strict crescătoare și sunt separate printr-un spațiu.

Se cere să se afișeze în fișierul bac.out, separate printr-un spațiu, două valori, reprezentând numărul de muzee convenabile, respectiv numărul de ordine al ultimului astfel de muzeu din lista tânărului.

Loterie

#4848

La o loterie se generează aleatoriu un șir de numere naturale și pentru fiecare număr generat, se inversează ordinea cifrelor. Dintre valorile distincte obținute se extrag trei numere, în această ordine: cel mai mic, cel mai mare dintre cele rămase, apoi cel mai mic dintre cele rămase.

Fișierul text bac.in conține cel mult 106 numere naturale din intervalul [1001,9999], cu cifra unităților nenulă, separate prin câte un spațiu, reprezentând termenii șirului generat aleatoriu în vederea extragerii.

Scrieți un program care afișează n fișierul bac.out cele trei numere, în ordinea extragerii acestora. Numerele afișate sunt separate prin câte un spațiu, iar dacă nu există trei astfel de numere distincte, se afișează mesajul nu exista.

Un cuvânt semioglindit se obţine dintr-un cuvânt cu 2·k (k∈[1,100]) litere, prin interschimbarea în acesta a secvenței formate din primele k litere cu secvența formată din ultimele k litere.

Exemplu: din cuvântul platim se obţine cuvântul semioglindit timpla.

Într-un text de cel mult 200 de caractere, cuvintele sunt formate din litere mici ale alfabetului englez și sunt separate prin câte un spaţiu. Scrieţi un program care citeşte de la tastatură un text de tipul precizat, pe care îl transformă în memorie, prin înlocuirea fiecărui cuvânt cu număr par de litere, cu cel semioglindit obținut din acesta. Programul afișează pe ecran textul obținut, sau mesajul nu exista, dacă toate cuvintele au număr impar de litere.

Consecutiv C++

#4846

Subprogramul consecutiv are doi parametri:

  • n, prin care primește un număr natural (n∈[1,104]);
  • f , prin care furnizează un număr natural cu proprietatea: (f-1)∙f < n ≤ f∙(f+1).

Scrieți definiția completă a subprogramului C++.

Ascendent C++

#4844

Numărul natural an este ascendent al numărului natural n, dacă oricare dintre cifrele lui an este mai mare sau egală cu cifra unităților lui n.

Exemplu: oricare dintre numerele 7, 9, 98 sau 7998 este ascendent al lui 827, dar numărul 857 nu este ascendent al lui 827.

Subprogramul ascendent are trei parametri:

  • n, prin care primește un număr natural (n∈[0,1000));
  • x și y, prin care primește câte un număr natural din intervalul [0,1000) (x<y).

Subprogramul returnează suma ascendenților lui n din intervalul [x,y], sau valoarea 0, dacă nu există niciun astfel de ascendent. Scrieți definiția completă a subprogramului C++.

Du-te sus!