Lista de probleme 83

Filtrare

Dificultate

Operații intrare/ieșire


Etichete

Corina are un text format din mai multe cuvinte separate între ele printr-un spațiu, pentru care trebuie să utilizeze cuvintele aflate pe poziţii consecutive. Se știe că pentru două cuvinte pe care le vom numi x și y:

  • cuvântul x=x[0]x[1]...x[n-1] este prefix al cuvântului y=y[0]y[1]...y[m-1], dacă x[0]=y[0], x[1]= y[1],…, x[n-1]=y[n-1]
  • cuvântul x=x[0]x[1]...x[n-1] este sufix al cuvântului y=y[0]y[1]...y[m-1], dacă există un indice i, (0≤ i≤ m-1), astfel încât x[0]=y[i], x[1]= y[i+1],…, x[n-1]= y[m-1].

Scrieţi un program care determină pentru un text dat, format din mai multe cuvinte separate între ele printr-un spațiu, două cerințe:

  • cerința 1: câte perechi de cuvinte, notate x și y, aflate pe poziții consecutive în text au proprietatea: x este sufix al lui y sau x este prefix al lui y.
  • cerința 2 : care este perechea de cuvinte, aflate pe poziții consecutive în text, care conține cele mai multe caractere.

Urmasii lui Moisil, gimnaziu, 2017

#1999 Caps

Miruna a descoperit un nou joc. Ea dispune de litere mari și mici ale alfabetului englez și construiește succesiv șiruri de litere din ce în ce mai lungi. Ea definește operația CAPS a unei litere, ca fiind transformarea literei respective din literă mare în literă mică sau invers, din litera mică în literă mare. Pentru fiecare șir S, Miruna asociază un nou șir Sc, numit șir CAPS, care se obține aplicând operația CAPS asupra tuturor literelor din șirul S. Miruna a inventat o altă operație pentru un șir de litere S, numită NEXT, prin care obține un nou șir SN care are structura SScScS (este format în ordine de la stânga la dreapta din literele lui S, apoi de două ori succesiv literele șirului Sc, iar apoi urmează din nou literele șirului S). De exemplu, șirului S="Ham" îi corespunde șirul CAPS Sc="hAM" și dacă se aplică și operația NEXT asupra șirului S, obține șirul Sn="HamhAMhAMHam". Inițial, Miruna construiește un șir S de K litere. Apoi, ea construiește un nou șir obținut prin aplicarea operației NEXT asupra șirului S. Miruna dorește să obțină succesiv șiruri de litere din ce în ce mai lungi aplicând operația NEXT asupra șirului construit în etapa precedentă.

Astfel, pentru K=3 și S="Ham", Miruna va construi șirurile "HamhAMhAMHam", "HamhAMhAMHamhAMHamHamhAMhAMHamHamhAMHamhAMhAMHam" și așa mai departe. Miruna continuă procedeul de construire până când obține un șir final suficient de lung.

Miruna vă roagă să răspundeți la Q întrebări de tipul:

„Dacă se dă un număr natural N, ce literă este în șirul final pe poziția N și de câte ori a apărut această literă în șirul final, de la începutul șirului final până la poziția N inclusiv?”.

OJI 2017, Clasa a X-a

#2107 Pomi

În livada sa, Vasile are pomi fructiferi, organizaţi în parcele în funcţie de soi. În fiecare an, scoate la vânzare doar o parte dintre pomii adulţi dintr-o singură parcelă. Ca să asigure spaţiu de dezvoltare pentru pomii rămaşi, Vasile s-a decis să fie scoşi la vînzare numai acei pomi din parcelă al căror număr de ordine este divizibil cu o cifră k, numită cifra anului.

Cunoscând valorile a şi b, reprezentând numerele de ordine ale primului, respectiv ultimului pom din parcela din care se face vânzarea, precum şi kcifra anului, se cere să se determine numărul de pomi scoşi la vânzare de Vasile în acest an.

Olimpiada Municipala Informatica Iasi 2013

#2108 Fraze

Alina este pasionată de rebus şi literatură. Recent, a citit un articol în limba engleză despre fraze denumite pangram. O frază pangram este formată din cuvinte, separate printr-un singur caracter (spaţiu sau virgulă) şi care folosește fiecare literă din alfabetul unei limbi cel puțin o dată.
O frază pangram perfectă este o frază pangram care folosește fiecare literă din alfabet doar o singură dată. Alina se decide să stabilească frazele pangram, numărul de fraze pangram şi numărul de fraze pangram perfecte dintr-un text. Fiecare frază din text începe cu o literă mare şi se încheie cu caracterul punct.

Scrieţi un program care să determine numărul de fraze pangram, numărul de fraze pangram perfecte dintr-un text dat şi să afişeze frazele pangram în ordine lexicografică.

Olimpiada Municipala Informatica Iasi 2013

#2116 Smiley

Pentru a exprima starea de spirit în comunicarea online sunt utilizate emoticonurile (cunoscute şi sub denumirea de smileys). În mod text, un smiley este reprezentat ca o secvenţă de caractere.

Dat fiind un text, să se determine numărul de smileys care apar în text.

Olimpiada Municipala Informatica Iasi 2015

Camelia este pasionată de operații aritmetice. Într-o zi, s-a gândit să evalueze valoarea unei expresii ce este formată din litere mici şi operatorii: +, <, >. În expresie, fiecare literă va fi înlocuită cu numărul de ordine pe care îl are în alfabet (a=1, b=2 etc.). Prietena ei, Mădălina i-a pregătit Cameliei mai multe expresii de acest tip, pe care să le evalueze și apoi să determine care este numărul cel mai mare, obținut dintr-un șir de litere, din expresiile date.

Scrieţi un program care determină pentru un şir de n expresii, formate din litere mici şi operatorii: +, <, >, două cerinţe:
-cerinţa 1: să determine numărul cel mai mare, obținut dintr-un șir de litere, din expresiile date;
-cerinţa 2: să evalueze fiecare expresie și să afișeze valoarea ei.

Olimpiada Municipala de Informatica, Iasi, 2017

#2212 eval

Să considerăm o expresie aritmetică care conţine ca operanzi numai variabile al căror nume este format dintr-o singură literă mică a alfabetului englez. Valorile iniţiale ale variabilelor ce pot interveni în expresie sunt: a = 1, b = 2, …, z = 26. În expresie pot fi utilizaţi doi operatori binari (+ şi , reprezentând adunarea şi respectiv scăderea) şi doi operatori unari (++ şi --, reprezentând operatorul de incrementare şi respectiv operatorul de decrementare). Operatorii unari ++ şi –– pot fi plasaţi numai înainte sau după o variabilă. Dacă operatorul unar ++ apare înaintea unei variabile, atunci valoarea variabilei este mărită cu 1 înainte ca valoarea variabilei să fie luată în calculul expresiei. De exemplu, valoarea expresiei ++c–b este 2, iar valoarea variabilei c după evaluarea expresiei va fi 4. Când operatorul unar ++ apare după variabilă, valoarea variabilei este mărită cu 1 după ce valoarea acelei variabile este folosită la calculul expresiei. De exemplu, valoarea expresiei c++–b este 1, iar valoarea variabilei c după evaluarea expresiei va fi 4. Operatorul –– se comportă la fel, cu observaţia că valoarea variabilei se va micşora cu 1. Operatorii unari au prioritate mai mare decât cei binari (mai exact, se execută mai întâi incrementările/decrementările, apoi adunările şi scăderile). În cazul în care există mai multe operaţii cu aceeaşi prioritate, acestea vor fi executate în ordine, de la stânga la dreapta. Scrieţi un program care să determine valoarea unei expresii, precum şi valorile finale ale variabilelor folosite în expresie.

Olimpiada Municipala de Informatica, Iasi, 2007

#2352 careu

Gigel a inventat un nou joc, de această dată utilizând un rebus sub forma de tablă pătratică cu n x n căsuțe. Fiecare căsuță conține câte o literă mare din alfabetul englez sau caracterul '.'. Literele formează pe orizontală sau pe verticală cuvinte delimitate prin caractere punct sau prin marginile tablei. Cel care joacă trebuie să determine cuvintele speciale din careu. Punctajul unui cuvânt se calculează ca suma codurilor ASCII ale literelor distincte care apar în acel cuvânt. Punctajul total al jocului se calculează însumând punctajele literelor distincte ale cuvintelor speciale distincte. Un cuvânt special îndeplinește simultan condițiile:

  • este palindrom
  • are lungime maximă relativ la alte cuvinte palindrom

Să se scrie un program care sa determine, pentru un careu dat, punctajul maxim și cuvintele care permit obținerea punctajului maxim. Dacă nu există astfel de cuvinte se va afișa valoarea 0.

Olimpiada Municipala de Informatica, Iasi, 2018

#2444 eq4

Se dă o expresie matematică în care pot să apară literele x, y, z, t, cifre și semnele + sau -.
Cifrele alăturate formează numere. Literele reprezintă variabile. O variabilă poate fi precedată de un număr. Între variabilă și numărul care o precede nu există alte caractere. Un grup format dintr-o literă și, eventual, un număr care o precede formează un monom. Un monom nu conține mai multe litere. Numărul care apare într-un monom se numește coeficient.
Expresia poate să conțină și numere care nu sunt urmate de o variabilă. Aceste numere se numesc termeni liberi.
Expresia este deci alcătuită din monoame și termeni liberi. Fiecare monom și fiecare termen liber este precedat de unul dintre semnele + sau -.
Valoarea matematică a unei expresii este valoarea care se obține dacă înlocuim literele care apar în expresie cu valori numerice și efectuăm calculele. Valoarea unui monom se obține înmulțind coeficientul monomului cu valoarea pe care o are variabila care apare în respectivul monom. De exemplu, valoarea expresiei +3x pentru x=2 este 6.
Fiind dată o expresie corectă, să se determine:
1. valoarea matematică a expresiei dacă x, y, z și t au valoarea 1.
2. numărul de cvartete distincte (x,y,z,t), de valori întregi care aparțin unui interval dat [a,b], pentru care expresia matematică corespunzătoare expresiei date este egală cu o valoare dată E. Două cvartete sunt distincte dacă există cel puţin o poziţie pentru care valorile corespunzătoare sunt diferite.

#2471 gcl

Gigel a inventat un nou limbaj de programare pe care l-a numit GCL (Gigel Campion Language). În GCL pot fi utilizate maxim 26 variabile notate cu litere mici ale alfabetului englez. Valoarea inițială fiecărei variabile (la începutul execuției programului) este 0.

Un program în limbajul GCL este format dintr-o succesiune de comenzi, câte o comandă pe o linie. Scrieți un program care citește un program scris limbajul GCL și rezolvă următoarele două cerințe:

1. determină numărul de comenzi SCRIE care se execută;
2. determină rezultatele afișate de comenzile SCRIE din programul scris în limbajul GCL.