Lista de probleme 83

Filtrare

Dificultate

Operații intrare/ieșire


Etichete

#2565 Catchy

Refolosirea cuvintelor care au fost scrise pe bannere publicitare mai vechi este deviza angajaților firmei publicitare “Catchy”. În magazia firmei sunt depozitate K bannere vechi. Cuvintele de pe acestea pot fi decupate integral şi reasamblate pentru a forma textul noilor bannere comandate. Caracterele speciale care separă cuvintele nu vor fi refolosite. Si-au propus să realizeze un singur banner pentru care textul este format numai din cuvinte care se află deja scrise pe bannerele depozitate în magazie. Dacă există mai multe astfel de bannere, vor alege un banner pentru care numărul de exemplare identice care pot fi realizate este maxim. Dacă şi în acest caz există mai multe bannere, se va realiza bannerul cu numărul de ordine cel mai mic.
Cunoscând textele scrise pe cele K bannere depozitate în magazia firmei, precum și textele care trebuie să fie scrise pe cele N bannere nou comandate, scrieţi un program care să determine bannerul care urmează să fie realizat, în condiţiile descrise în enunţul problemei.

Se dă numărul n în baza b, să se afișeze numărul n în convertit în baza c.

Albă ca Zăpada şi cei n pitici locuiau încă în căsuţa lor din pădure. Piticilor le făcuse cadou Moş Crăciun câte un număr şi fiecare pitic s-a hotărât să scrie numărul primit ca sumă de m numere naturale, astfel încât cel mai mic dintre numerele din sumă să fie maxim posibil, iar diferenţa dintre cel mai mare număr din sumă şi cel mai mic să fie minimă.

Gigel se joacă cu cuvinte (scrise cu litere din alfabetul englez, mari sau mici). El a asociat fiecărei litere din alfabet o valoare număr natural, pe care a numit-o valoarea literei. Apoi a definit valoarea unui cuvânt astfel: se calculează suma S1 a valorilor literelor mici din cuvânt şi suma S2 a valorilor literelor mari din cuvânt. Valoarea cuvântului va fi S1 - S2.

Cunoscându-se valoarea fiecărei litere din alfabet şi o listă de cuvinte, să se determine cuvântul cu valoarea maximă. Dacă există mai multe cuvinte de valoare maximă, se vor determina toate, în ordinea din lista dată.

Gigel învaţă la matematică despre mulţimi. A scris pe foaie o mulţime formată din litere mari şi mici ale alfabetului englez, considerate identice. A separat elementele cu virgule (,) şi a delimitat mulţimea cu acolade. Din păcate, în mulţimea scrisă de Gigel se pot repeta litere, sau pot să apară şi litera mare şi litera mică. Gigel vă roagă să-l ajutaţi să corecteze acea mulţime, adică:

  • să eliminaţi dublurile;
  • să ordonaţi alfabetic elementele;
  • dacă cel puţin jumătate dintre elementele iniţiale sunt litere mari, să transformaţi toate elementele în litere mari; în caz contrar să transformaţi toate elementele în litere mici.

Se dă o expresie cu necunoscutele x y z și coeficienți întregi. Să se reducă termenii asemenea și să se determine termenul din expresia rezultat cu coeficientul maxim.

#859 Rime

Se dă o mulțime cu n cuvinte distincte. Să se împartă în submulțimi de cuvinte cu proprietatea că oricare două cuvinte din aceeași submulțime rimează și oricare două cuvinte care rimează sunt în aceeași submulțime.

Fie un șir de caractere. Prin dublarea șirului înțelege oglindirea sa și concatenarea oglinditului la șirul inițial. De exemplu, prin dublarea șirului arc se obține șirul arccra. Orice șir de caractere se poate obține prin dublarea de un număr de ori (eventual de zero ori) a unui șir de caractere.

Se dă un șir de caractere s. Să se determine numărul maxim de operații de dublare care pot fi aplicate succesiv pentru a obține șirul s.

#2344 dvorak

R. a descoperit de curând tastatura DVORAK și s-a decis că poate scrie mult mai rapid și mai corect cod folosind această tastatură decât folosind tastatura QWERTY. Plictisindu-se, R. a creat, pentru a onora tastatura lui preferată, transformarea dvorak, care se realizează prin înlocuirea fiecărei litere dintr-un șir de caractere cu corespondența acesteia dintr-o permutare dată a alfabetului englez. De exemplu, cuvântul informatica poate să devină, printr-o transformare dvorak, cburpmaycja.

H., profitor din fire, a decis să intre pe calculatorul lui R. și să îi fure sursele valoroase de la problemele “rupere” pe care le-a rezolvat.

Dar R. şi-a securizat calculatorul cu o parolă (constând într-o succesiune de litere mici ale alfabetului englez). Din când în când, R. își modifică o parte din parolă efectuând următoarea operație: alege două poziții în parolă Si (capăt stânga) si Di (capăt dreapta) apoi aplică transformarea dvorak asupra secvenței formată din caracterele situate în parolă pe poziții din intervalul [Si, Di]. Această operație este de tipul 1 și este codificată prin: 1 Si Di.

Acum H. are nevoie de ajutorul vostru ca să afle parola şi să furați împreună toate sursele ca sa fiți primii la statistici pe Varena). Din când în când, el vă va da câte un sir de caractere nevid (SIR) și vă va întreba dacă acest șir se regăsește ca subsecvență în parola lui R. Această operație este de tipul 2 și este codificată prin: 2 SIR

Cunoscându-se permutarea dată, parola lui R. precum și o succesiune de Q operații de tipul 1 sau 2, găsiți răspunsurile la întrebările toate lui H.

Scrieţi în limbajul C++ definiţia completă a funcţiei recursive nr_aparitii cu următorul antet:

unsigned nr_aparitii(char *sir, char *secventa)

ce returnează numărul de apariţii ale şirului de caractere secventa în şirul sir.