Lista de probleme 130

Filtrare

Cele mai multe editoare de text moderne oferă utilizatorilor o serie de opțiuni pentru modificarea textului grupate sub numele Change Case. Aceste opțiuni sunt:

  1. lowercase – toate literele din text sunt transformate în litere mici. Celelalte caractere rămân neschimbate;
  2. UPPERCASE – toate literele din text sunt transformate în litere mari. Celelalte caractere rămân neschimbate;
  3. TitleCase – prima literă a fiecărui cuvânt este transformată în litere mari, celelalte în litere mici;
  4. iNVERTcASE – prima literă a fiecărui cuvânt este transformată în litere mici, celelalte în litere mari;
  5. Sentencecase – prima literă a fiecărei propoziții este transformată în literă mare, celelalte în litere mici.

Se dă un sir de caractere format din litere mari și mici ale alfabetului englez, cifre, spații și semnele de punctuație .,;, în care cuvintele sunt alcătuite din litere sau cifre, iar propozițiile sunt separate prin punct (.), precum și o transformare dintre cele date care trebuie aplicată.

Aplicați asupra șirului dat transformarea precizată și afișați șirul.

Se consideră un text alcătuit din mai multe linii, în care cuvintele sunt separate prin spatii și caractere din setul .,;:-?!. Să se determine cuvintele distincte din text care conţin subşirul ate, fără a face distincţie între litere mari şi mici.

Find dat un string S, se poate obține un palindrom din șirul inițial ștergând doar un singur caracter ?

Concursul Interjudețean de Informatică „Memorial Ștefan Dârțu”, ediția a XI-a, 12 decembrie 2015, Vatra Dornei

#2195 sumpow2

Orice număr natural nenul se poate scrie în mod unic ca o sumă de puterile ale lui 2 care nu se repetă. Exemplu: 77 = 20 + 22 + 23 + 26.
Primele 16 puteri ale lui 2 se reprezintă prin litere ale alfabetului englez, după cum urmează: a = 1, b = 2, c = 4, d = 8, e = 16, f = 32, g = 64, h = 128, i = 256, j = 512, k = 1024, l = 2048, m = 4096, n = 8192, o = 16384, p = 32768.
Astfel, orice număr din intervalul [1, 216] poate fi codificat ca o combinație unică a acestor litere, aranjate în ordine alfabetică, în care orice literă apare cel mult o singură dată, astfel încât suma valorilor acestor litere să fie egală cu valoarea numărului (77 = acdg).

Să se scrie un program C/C++ care citește două șiruri de caractere ce reprezintă două numere naturale codificate după regula de mai sus, program care afișează un șir de caractere ce reprezintă suma celor două numere.

#3392 magazin

Se cere să se determine numărul minim de litere (lungimea celui mai scurt prefix) de care are nevoie fiecare dintre prieteni pentru a-și construi numele.

#1705 Farma

Noile reguli din sistemul sanitar cer ca medicii să nu prescrie pe reţete un anumit medicament, ci să menţioneze substanţa activă. Reţeta este formată din n prescripţii, câte una pentru fiecare substanţă activă prescrisă.

Farmacista de la care cumpăr medicamentele mi-a făcut o listă în care pentru fiecare substanţă activă de pe reţetă sunt trecute medicamentele care conţin substanţa activă respectivă, precum şi preţul pastilelor prescrise din medicamentul respectiv, sub forma următoare:

  • substanţa activă : medicament1 preţ1, medicament2 preţ2, ..., medicamentk preţk

Din păcate, între anumite medicamente există incompatibilităţi şi ca urmare ele nu pot fi administrate simultan, deoarece ar produce reacţii adverse. De aceea, farmacista mea mi-a dat şi o listă de incompatibilităţi, în listă fiind specificate perechi de medicamente incompatibile, sub forma:

  • medicament1/medicament2

Când cumpăr reţeta, eu trebuie să iau câte un medicament pentru fiecare substanţă activă prescrisă de medic şi să am grijă să nu cumpăr medicamente care sunt incompatibile. Desigur, voi cumpăra pastilele prescrise pentru tratamentul complet.

Cunoscând lista pe care mi-a dat-o farmacista, precum şi incompatibilităţile dintre medicamente, scrieţi un program care să determine:

  1. câte medicamente am la dispoziţie pentru fiecare substanţă activă;
  2. suma minimă pe care trebuie să o cheltui pentru a cumpăra reţeta.

ONI 2016, clasa a VIII-a

#2416 seti

Cercetătorii ce lucrează la programul SETI au recepţionat două transmisii de date foarte ciudate, date care ar putea veni din partea unor civilizaţii extraterestre. Primul set de date este format din 10 caractere distincte, date în ordinea lor lexicografică, ce formează alfabetul extraterestru. A doua transmisie conţine cuvinte din exact 4 caractere.
Cercetătorii trebuie să ordoneze lexicografic cuvintele primite în a doua transmisie (conform alfabetului extraterestru).

#3606 limbaj

Definim un limbaj de programare, cu instrucțiuni de atribuire și de decizie. Cunoscând valorile inițiale ale tuturor variabilelor(de la a la z), să se determine valorile tuturor variabilelor după execuția unei secvențe de program.

#2382 mesaje

După multe năzbâtii făcute împreună, Alex şi Cipri nu mai au voie să se întâlnească. Alex – strategul echipei – a plănuit o nouă poznă şi a decis să-i transmită prietenului său planul de luptă, constând din anumite cuvinte dintr-un mesaj m[0]. Pentru a nu fi descoperiți, i-a trimis ulterior mai multe mesaje m[1], m[2], … lui Cipri, acesta trebuind să le descifreze folosind convenția secretă stabilită la începutul prieteniei lor și să “acționeze”. Fiecare mesaj m[i] este format din mai multe cuvinte, separate prin câte un spațiu, numerotate cu valori consecutive, începând de la 1.
Pentru a afla planul, Cipri trebuie să găsească cea mai mare valoare i ≥ 0 astfel încât mesajele m[i] și m[0] să conțină cel puțin un cuvânt identic având același număr de ordine în ambele mesaje. Din m[0] se păstrează toate cuvintele care se găsesc și în mesajul m[i] cu același număr de ordine ca în m[0].
Cuvintele păstrate trebuie ordonate în ordine descrescătoare lexicografică a puterii lor. Puterea cuvântului cu numărul de ordine j în m[0] este egală cu șirul ordonat descrescător al indicilor mesajelor în care apare cu același număr de ordine ca în m[0]. Astfel, un cuvânt care a apărut cu numărul de ordine 2 în mesajele m[0], m[6] și m[8] are puterea {8,6,0}. Dacă două cuvinte au aceeași putere, vor rămâne în ordinea din mesajul inițial. Lui Cipri nu i-a mai rămas decât să citească fiecare cuvânt de la dreapta la stânga şi a descifrat tot planul de luptă Cunoscând mesajele transmise de Alex, ajutaţi-l pe Cipri să descifreze planul de luptă conform convenţiei secrete.

ONI 2010

#1996 zigzag

Scrieţi un program care citeşte cheia de codificare şi un text codificat şi determină mesajul decodificat.