Lista de probleme

#1914 Rica

Rică a învățat la școală despre șiruri recurente și a primit ca temă să lucreze cu un anumit șir. Rică știe că primele elemente din acest șir sunt următoarele: 1,1,2,4,7,13,24,44,81,149,274,504. Tema lui Rică este să găsească termenul de pe locul X. Rică nu știa să zică… regula şirului nostru, de aceea el vă cere ajutorul.

Deduceți regula de formare a șirului și scrieți un program care să afișeze pentru un X dat, elementul din șir de pe poziția X.

Moisil++, 2016

#1913 mr

Rică se joacă în fiecare seară The MazeRunnerVladVersion, joc pe care îl vom numi pentru simplitatea problemei MR. Jocul constă în găsirea unei căi de scăpare dintr-un labirint care conține:

  • ziduri prin care Rică nu va putea să treacă;
  • zero sau mai multe teleporturi cu ajutorul cărora deplasarea între două puncte precizate p1(x1, y1) și p2(x2, y2) se face într-un minut, dacă se doreşte acest lucru;
  • zone libere, trecerea din zona curentă într-o zonă învecinată se poate face pe direcția celor patru puncte cardinale. Deplasarea se va face într-un minut.

Rică pleacă din colțul stânga-sus al labirintului și doreşte să ajungă în colțul dreapta-jos.

El știe că are o teză în ziua următoare, așa că vă cere ajutorul vouă, programatorilor, și vă roagă să aflați timpul minim în care poate să ajungă din colțul stânga-sus în colțul dreapta-jos al labirintului.

Moisil++, 2016

Se dă un vector x cu n elemente numere naturale, ordonate crescător, și un vector y cu m elemente, de asemenea numere naturale. Verificați pentru fiecare element al vectorului y dacă apare în x.

Se dă un vector cu n elemente, numere naturale. Fie două numere x și y, cu proprietatea că 1 ≤ x , y ≤ n. Scrieți un program care răspunde la m întrebări de tipul “Care este elementul minim din intervalul [x , y]?”.

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.

#1884 UEMM1

Se dă un șir cu n elemente, numere naturale. Să se afișeze, pentru fiecare element din șir, valoarea din șir aflată după acesta și mai mare decât acesta. Dacă o asemenea valoare nu există, se va afișa -1.

Scrieți un program C/C++ care citește de la tastatură un text și îl transformă în memorie prin înlocuirea fiecărui cuvânt format din număr par de litere cu simbolul #.

Model bacalaureat

#1871 UbuPH

Într-o zi telefonul lui Max s-a stricat.Văzând o reclamă la noul telefon cu sistemul de operare Ubuntu, s-a gândit să achiziționeze și el unul.

Drumul de la casa lui la magazin poate fi reprezentat ca o matrice cu n linii și m coloane. În fiecare element al matricei este o barieră; pentru a trece de bariere trebuie plătită o sumă de bani, care nu este aceeași pentru fiecare barieră și poate fi chiar 0.

Casa lui se află pe coordonatele (ic,jc), iar magazinul la coordonatele (im,jm).
Pentru că trebuie să cumpere telefonul, este nevoie ca drumul lui sa fie cât mai puțin costisitor, plătind la bariere o sumă totală minimă.

#1869 prosirz

Se citește un text format din cel mult 200 caractere (litere mici și/sau spații). a) Să se determine numărul de vocale din text. b) Să se înlocuiască ultima literă a fiecărui cuvânt cu litera Z (mare). c) Să se rearanjeze în ordine invers lexicografică cuvintele din text și să se separe aceste cuvinte prin câte un singur spațiu.

#1868 prosirx

Se consideră un text în care cuvintele sunt separate prin unul sau mai multe spații.

a) Să se determine determină numărul de consoane din textul citit.
b) Să se înlocuiască prima literă a fiecărui cuvânt din textul citit cu litera X (mare);
c) Să se modifice textul citit prin aranjarea în ordine lexicografică a tuturor cuvintelor din text și separarea lor prin câte un singur spațiu.

Să se scrie un program care citește mai multe propoziții și determină propoziția cu cele mai multe vocale

#1866 prosir

Să se înlocuiasca cu cifra 5 ultima literă a fiecărui cuvânt din textul conținut de fișierul prosir.in.

#1865 Summit

Se dă un şir x format din n numere naturale nenule. Pentru fiecare element xi din şir să se verifice dacă există un număr k astfel încât elementul xi să fie egal cu suma primelor k elemente din şir.

#1490 Musca

Ferma lui Algo arată ca o gospodărie mare, în care îşi găsesc locul multe animale şi sunt cultivate pe suprafeţe întinse legume, cereale şi pomi fructiferi. În acest an, pomii a fost atacaţi de o musculiţă care le distruge fructele. Algo a căutat o soluţie pentru îndepărtarea musculiţelor, dar nu a găsit una eficientă. A observat însă că musculiţele sunt sensibile la fum. Aşa că a construit un dispozitiv alcătuit din două ţevi, cu care poate să tragă în acelaşi timp, pe aceeaşi direcţie, dar în sens invers, două baloane speciale umplute cu fum. La fiecare acţionare a dispozitivului sunt lansate cu aceeaşi viteză cele două baloane, care se sparg şi împrăştie fumul la contactul cu copacul.

Deoarece baloanele speciale şi tehnologia lui de a le umple cu fum sunt costisitoare, Algo îşi propune să alunge dăunătorii folosind cât mai eficient resursele. Astfel el vrea să folosească cât mai puţine baloane şi caută posibilitatea de a amplasa dispozitivul într-un punct din fermă care să îi permită trageri eficiente, adică să poată trage în toți pomii din fermă și la fiecare tragere să atingă doi pomi în acelaşi timp.

Determinaţi dacă este posibil să găsească acest punct.

Olimpiada locală de informatică, Prahova, 2016

#1856 Taxe2

Într-o ţară în care corupţia este în floare şi economia la pământ, pentru a obţine toate aprobările necesare în scopul demarării unei afaceri, investitorul trebuie să treacă prin mai multe camere ale unei clădiri în care se află birouri.

Clădirea are un singur nivel în care birourile sunt lipite unele de altele formând un caroiaj pătrat de dimensiune n•n. Pentru a facilita accesul în birouri, toate camerele vecine au uşi între ele. În fiecare birou se află un funcţionar care pretinde o taxă de trecere prin cameră (taxă ce poate fi, pentru unele camere, egală cu 0). Investitorul intră încrezător prin colţul din stânga-sus al clădirii (cum se vede de sus planul clădirii) şi doreşte să ajungă în colţul opus al clădirii, unde este ieşirea, plătind o taxă totală cât mai mică.

Ştiind că el are în buzunar S euro şi că fiecare funcţionar îi ia taxa de cum intră în birou, se cere să se determine dacă el poate primi aprobările necesare şi, în caz afirmativ, care este suma maximă de bani care îi rămâne în buzunar la ieşirea din clădire.

OJI 2003

Scrieți definiția completă a subprogramului C++ recursiv P care primeşte prin intermediul parametrului n un număr natural nenul (n≤100), iar prin intermediul parametrului x un tablou unidimensional cu n componente întregi, de maximum șase cifre fiecare.

Subprogramul furnizează prin intermediul parametrului s suma elementelor din tabloul x care au valori numere prime.

Scrieţi definiția completă a subprogramului C++ recursiv ordonare care are 4 parametri: a, prin care primeşte un tablou unidimensional cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului și doi indici st dr.

Subprogramul ordonează crescător elementele tabloului a cu indici între st și dr, inclusiv aceștia,fără a modifica celelalte elemente ale tabloului.

#1845 OrdonareF_Rec C++

Scrieţi definiția completă a subprogramului C++ recursiv ordonare care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului.

Subprogramul ordonează crescător elementele tabloului a, fără a returna valori.

#1844 Inlocuire0Rec C++

Scrieţi definiția completă a subprogramului recursiv C++ num care are 2 parametri: n – prin care primește un număr natural și v, prin care primeşte un tablou unidimensional cu n elemente, numere naturale cu cel mult 4 cifre.

Subprogramul înlocuieşte cu 0 fiecare valoare mai mică sau egală cu prima valoare din tablou. Tabloul modificat este furnizat tot prin parametrul v.

#1843 FSumVecRec C++

Scrieți definiția completă unui subprogram recursiv C++ care returnează suma elementelor unui tablou unidimensional cu indici din afara unui interval dat.

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ă.

Pentru o mulţime cu n elemente naturale să se afle câte submulţimi nevide au suma elementelor pară.

Se dau N drepte paralele în sistemul de axe ortogonale xOy, acestea intersectând axa Ox în N puncte de abscise întregi x1, x2, ... , xN. Determinaţi numărul maxim M de perechi de drepte dintre cele date, pentru care distanţa dintre dreptele din orice pereche este aceeaşi.

În clasa a 10-a Alina, Bogdan şi Clara se întâlneau în fiecare săptămână să se joace BlitzCatan. Ei aveau la dispoziţie o repriză de 2 ore pe care o foloseau din plin, fiecare joc durând cel puţin 30 de minute. Cei trei prieteni, dornici să reţină cine a câştigat fiecare joc au vrut sa noteze într-un carneţel. Ei s-au temut ca cineva le va citi carneţelul, aşa că au procedat astfel:

  • la finalul unui joc i, câştigătorul c, alege un număr secret \(m_i\) > 0 astfel încât \(m_i\) % 3 = c (Alina alege un multiplu de 3 când câştigă, Bogdan un multiplu de 3+1, Clara un multiplu de 3+2)
  • la finalul celor 2 ore, ei calculează unde J este numărul de jocuri, şi notează T în carneţel

Concursul EMPOWERSOFT, 2016

În Regatul din Sud nu e niciodată prea devreme să te pregăteşti de război. De aceea, în fiecare an Regele organizează un concurs în care premiaţi sunt cei mai buni strategi. Mai întâi, Strategul Şef alege configuraţia ideală de razboi, în care armata va fi dispusă. O trupă într-o configurație e reprezentată de o literă mica din mulțimea {'a'..'z'}. De exemplu, configuraţia “ffscaam" descrie o armată formată din doi fermieri, un soldat, un cavaler, doi arcaşi şi un mag. Bineînţeles, în timpul unei lupte, trupele nu îşi vor menţine neapărat poziiţile inţiale. Cu toate acestea, orice tip de trupă poate schimba poziţia cu maxim un alt tip de trupă, ştiut de dinainte de toţi locuitorii regatului. De asemenea se ştie că arcaşii nu schimbă poziţii decât între ei. Pentru exemplul anterior, dacă un fermier sau un soldat nu schimbă poziţii decât cu un alt fermier sau soldat, configuraţii echivalente cu “ffscaam" sunt “fsfcaam" şi “sffcaam".

Fiecare strateg concurent alege o configuraţie, iar câştigătorii sunt cei care aleg configuraţii echivalente cu cea a Strategului Şef.

Concursul EMPOWERSOFT, 2016

#1001 Rotund

Spunem că un număr natural x este rotund dacă există un număr natural nenul k, mai mic strict decât numărul de cifre ale lui x, astfel încât prin permutarea circulară a cifrelor numărului cu k poziţii la dreapta, să se obţină numărul iniţial x.

Se dă un şir cu n elemente, numere naturale. câte elemente din șir sunt rotunde, și care sunt acestea.

Se va defini şi apela subprogramul rotund care verifică dacă un număr natural, transmis ca parametru, este rotund.

#1508 Element_SA C++

Să se scrie o funcție C++ care are ca parametri două numere naturale n și m și o matrice A(n , m) avȃnd elemente numere întregi și returnează numărul de elemente „șa” din matrice. Un element A(i,j) din matrice se numește element „șa” dacă este maximul de pe coloana j si minimul de pe linia i sau invers.

Admitere Mate-Info UBB, iulie 2015

Prietenul nostru, Ionci, a învățat la scoală despre ridicarea la putere. Ajutați-l să calculeze \( a^b\).

#1799 Dinti1

Pentru o serie de activități foarte sofisticate, Gigel are nevoie de un fierăstrău special, alcătuit din mai mulţi dinţi. Un fierăstrău de gradul n este format din două fierăstraie de gradul n-1, între care se află un dinte de mărime n. Un fierăstrău de gradul 1 are un singur dinte, de mărime 1.

Calculați suma mărimilor dinților fierăstrăului de gradul n.

Calculați lungimea drumului minim de la locul de popas al lui Gigel la casa acestuia, ocolind vârcolacii, pe Yeti și pe Bigfoot.

Imaginație personală

Fie N un număr natural cu proprietatea că (N,10)=1.

Să se determine lungimea perioada T a fracției zecimale periodice simple 1/N.

Lot Juniori Magurele, 2016

Se dau puncte distincte în plan. Să se determine un poligon de arie maximă care are vârfuri dintre punctele date.

Se dau coordonatele în plan pentru n puncte care determină un poligon. Se mai dau coordonatele altor m puncte. Să se verifice, pentru fiecare dintre cele m puncte, dacă se găsește sau nu în interiorul (sau pe marginea) poligonului.

#29 MaxPrime C++

Să se scrie o funcție C++ care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cele mai mari două numere naturale prime mai mici decât n.

Variante Bacalaureat 2009

#1765 Cutie

După ce au vizitat toate obiectivele turistice din municipiul Iaşi, Ioana şi Maria au inventat un joc.

Ele au la dispoziţie un număr de n cutii aranjate în linie dreaptă, numerotate în ordine de la 1 la n, şi un număr de m bile ce pot fi aşezate în unele dintre aceste cutii. Unele cutii sunt deteriorate, astfel că bilele dispar dacă sunt puse în acele cutii.

O mutare constă în alegerea unei bile şi poziţionarea ei în una din cutiile învecinate (precedenta sau următoarea ). Bilele pot fi mutate după următoarea regulă: când o bilă a fost mutată pentru prima dată într-o anumită direcţie, atunci bila îşi păstrează direcţia de deplasare la următoarele mutări (de exemplu, dacă o bilă a fost mutată pentru prima dată spre stânga atunci orice mutări ulterioare ale acestei bile se pot face doar spre stânga).

Jocul se termină atunci când nici un jucător nu mai poate face nici o mutare. Pierde primul jucător care nu mai poate face nici o mutare. Fetele joacă un număr de T astfel de jocuri. Ştiind că Ioana este prima care face o mutare, iar apoi fetele mută alternativ, se cere să se stabilească pentru fiecare din cele T jocuri dacă ea are sau nu o strategie sigură de câştig.

ONI 2012, Clasa a X-a

Cunoscându-se numărul N de tipuri de produse și cantitățile din fiecare produs, în ordinea în care sosesc de la magazie, să se stabilească numărul maxim de pachete care se pot obține prin alegerea convenabilă a perechilor de produse consecutive și programarea corespunzătoare a automatului, pentru fiecare pereche aleasă.

Concursul EMPOWERSOFT, 2016

#1762 Morum

Cunoscând latura l a covorului, modelul m ales, procentul p din suprafața inițială a covorului care poate fi decupat, determinați gradul de dantelare al covorului (etapa până la care se poate proceda la modelare), precum și lungimea conturului și suprafața covorului după decupare (perimetrul și aria se vor afișa fiecare prin câte o fracție).

Concursul EMPOWERSOFT, 2016

#1761 Brutar

Renumitul nostru brutar a avut azi noapte un vis tare ciudat: acesta trăia într-un univers paralel în care nu omul îl mănâncă pe blat ci blatul îl mănâncă pe om… (eh, poate nu chiar atât de paralel). Astfel, brutarul nostru a fost atacat de blatul pe care tocmai îl pregătise (pentru prăjituri, evident) și a încercat să scape. Acesta a ieșit din brutărie și a ajuns în fața unui câmp de formă dreptunghiulară, cu dimensiunile cunoscute, ce poate fi împărțit în celule elementare cu latura de o unitate (exact ca o matrice!). Acesta poate intra pe câmp prin orice celulă a primei linii și trebuie să ajungă în orice celulă a ultimei linii (blatul se va întări până va ajunge acolo). Unele celule îi sunt inaccesibile din cauza diverselor obstacole (pietre, pomi, gropi,etc.)

Brutarul nostru se poate deplasa în 6 moduri:

  • Din căsuța curentă în cele adiacente ( Nord, Vest, Sud, Est )
  • Două mișcări speciale ce pot varia.

Mutările speciale vor fi citite din fișier și o mutare se va codifica astfel: xA yB, unde x și y sunt numere naturale nenule iar A și B sunt două caractere ce codifică direcția (A poate fi 'N' sau 'S' de la Nord respectiv Sud iar B poate fi ‘E’ sau ‘V’ de la Est respectiv Vest)

O mutare specială se poate face dacă celula destinație nu este ocupată de un obstacol și dacă nu implică ieșirea brutarului din matrice.

Brutarul vă roagă să îi specificați un traseu cu număr minim de celule parcurse, ce pornește de pe prima linie și se termină pe ultima linie, pentru a nu fi blătuit (mâncat de blat).

Concursul EMPOWERSOFT, 2016

După zile întregi de muncă, vrăjitorul Arpsod a terminat de confecționat noua sa baghetă magică, cea mai puternică de până acum. Ca să o testeze, el s-a gândit la următorul antrenament: își va lua K ținte miscătoare și se va apuca să tragă în ele cu cea mai puternică vrajă a lui, “Blatus Blast”. Fiind o magie foarte solicitantă, vrăjitorul a hotărat că va trage doar de N ori. Arpsod este un trăgător extraordinar, astfel fiecare din cele N lovituri va nimeri exact una din cele K ținte. Într-o sesiune de N lovituri, unele ținte pot fi lovite de mai multe ori iar altele niciodată. Vrăjitorul consideră că sesiunea de antrenament este reușită numai dacă fiecare țintă a fost lovită CEL PUȚIN O DATĂ.

În timp ce se odihnește pentru următoarea sesiune de antrenament, ca să mai treacă timpul, a început să numere în câte moduri ar fi putut lovi țintele astfel încât sesiunea de antrenament să fie una reușită.

Curioși din fire, v-ați apucat și voi să numărați dar, văzând că numărul modalităților devine prea mare, ați decis să vă mulțumiți cu restul împărțirii acestui număr la 666013.

Concursul EMPOWERSOFT, 2016

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.

#1099 Insule

Arhipelagul RGB este format din insule care aparţin ţărilor R, G şi B. Putem reprezenta harta arhipelagului ca o matrice cu n linii şi m coloane cu elemente din mulţimea {0, 1, 2, 3}. Un element egal cu 0 reprezintă o zonă acoperită de apă; un element egal cu 1 reprezintă o zonă de pământ aparţinând unei insule din ţara R, iar un element egal cu 2 reprezintă o zonă de pământ aparţinând unei insule din ţara G, iar un element egal cu 3 reprezintă o zonă de pământ aparţinând unei insule din ţara B.

Se consideră că două elemente ale matricei sunt vecine dacă ele au aceeaşi valoare şi fie sunt consecutive pe linie, fie sunt consecutive pe coloană. Două elemente aparţin aceleiaşi insule dacă ele sunt vecine sau dacă se poate ajunge de la un element la celălalt pe un drum de-a lungul căruia oricare două elemente consecutive sunt vecine.

Pentru a încuraja relaţiile de colaborare dintre ţările R şi G, se doreşte construirea unui pod care să unească o insulă aparţinând ţării R de o insulă aparţinând ţării G. Podul trebuie să respecte următoarele condiţii:

  • să înceapă pe o zonă cu apă consecutivă pe linie sau coloană cu o zonă aparţinând ţării R;
  • să se termine pe o zonă cu apă consecutivă pe linie sau coloană cu o zonă aparţinând ţării G;
  • să traverseze numai zone acoperite cu apă;
  • oricare două elemente consecutive ale podului trebuie să fie vecine;
  • lungimea podului să fie minimă (lungimea podului este egală cu numărul de elemente traversate de pod).

Dată fiind harta arhipelagului să se determine câte insule aparţin fiecărei ţări, precum şi lungimea minimă a unui pod care să satisfacă condiţiile din enunț.

OJI 2009, Clasa a X-a

#1745 minDivPrim C++

Subprogramul minDivPrim are un singur parametru, n, prin care primeşte un număr
natural. Subprogramul returnează cel mai mic număr natural care are aceiași divizori primi ca n.

Scrieţi definiţia completă a subprogramului.

Subiect Bacalaureat 2016

Se dă un vector indexat de la 1 cu n elemente numere naturale. Să se răspundă la q întrebări de forma x y, cu semnificația: “Care este cel mai mare divizor comun al elementelor cu indici cuprinși între x și y, inclusiv?”

#1729 Dorel

Îl cunoașteți pe Dorel cel ”priceput” la toate. Acesta și-a propus să ”strice” armonia unui șir S format din N caractere litere mică ale alfabetului englez, S=(S[1],S[2],…,S[N]).

El alege la întâmplare un caracter din șir, caracter aflat pe poziția k (1≤k≤N) și caută în stânga lui k primul caracter mai mare sau egal cu S[k], fie acesta aflat pe poziția i, S[k]≤S[i]. Dacă acesta nu există, i=1. Această alegere nu este suficientă. Dorel caută în dreapta lui k primul caracter mai mic sau egal cu S[k], fie acesta pe poziția j, S[j]≤S[k]. Dacă acesta nu există, j=N. Extrage din șirul S subșirul astfel delimitat. Ca urmare a alegerii făcute, Dorel obține două subșiruri:

  • X=(S[1],S[2],…,S[i-1],S[j+1],S[j+2],…,S[N])
  • Y=(S[i],S[i+1],…,S[j])

Cunoscând șirul S, ajutați-l pe Dorel să răspundă la Q întrebări de forma:

  • Pentru o poziție k din șirul S să se determine lungimea maximă a unei subsecvențe palindromice comune șirurilor X și Y.

Lot Juniori Magurele, 2016

Scrieţi un program care citeşte din fişierul de intrare mai multe şiruri de caractere formate din litere mici ale alfabetului englez şi determină câte dintre acestea sunt formate din două şiruri identice (cu lungimea cel puţin 1) concatenate.

#1714 Pandora

Anul 2154, undeva pe luxurianta planetă Pandora.

Aici coloniștii RDA (Resources Development Administration) doresc să-și stabilească o bază stelară pentru a exploata rezervele naturale de unobtainium, un minereu rar și prețios aflat din belșug pe munții plutitori (Hallelujah Mountains), munți ce plutesc lent purtați de curenții magnetici asemănător aisbergurilor în mare, pe suprafața planetei formată din gaz lichid.

Pentru prospectarea și exploatarea zăcămintelor de minereu este necesară cartografierea suprafeței planetei și întocmirea unei hărți digitizate reprezentate sub forma unui tablou bidimensional. Astfel, regiunea de interes geologic este împărţită în N×N pătrate teritoriale identice (zone), fiecare zonă fiind identificată prin tripletul (x,y,c), unde (x,y) reprezintă coordonatele zonei teritoriale (x – linia, y – coloana), iar c cota (înălțimea). Între zonele ocupate de munții există vaste zone de gaz lichid, zone care au cota 0.

Pentru recoltarea și transportul unobtainiumului către baza stelară coloniștii RDA folosesc spice-harvesters, nave speciale cu aterizarea pe verticală.

Aterizarea pe munții plutitori reprezintă o adevărată provocare pentru piloții RDA. Pentru a putea ateriza, piloții trebuie să identifice un sector plat (platformă de aterizare), platformă care să respecte designul trenului de aterizare al navelor (vezi figura alăturată). Platforma are forma unui pătrat de latură k ce este format din k*k zone teritoriale, astfel (k*k)-4 zone au aceeași cotă, iar cele 4 colțuri ale pătratului au cota strict mai mică decât restul zonelor pătratului.

Cunoscând descrierea a M zone teritoriale ce alcătuiesc munții plutitori să se determine coordonatele colțului stânga-sus al platformelor de aterizare pentru munții plutitori care permit aterizarea.

Lot Juniori Focsani, 2016

Fie N și T două numere naturale.

Să se determine numărul soluțiilor diferite S, ale ecuației \( x_1 \cdot x_2 \cdot \cdots \cdot x_N = T \), în mulțimea numerelor naturale.

Lot Juniori Focsani, 2016

Scrieţi în limbajul C++ definiţia completă a subprogramului inmultire cu următorul antet:

void inmultire(matrice_rara a, matrice_rara b, matrice_rara &c)

ce calculează în c produsul matricelor rare a şi b.

Să se verifice dacă un cuvânt dat este palindrom.

Verificați dacă un șir dat este palindrom ciclic .

Concurs UBB Cluj 2016

#1660 Fotbal

Dându-se un scor de fotbal, să se determine în câte moduri poți ajunge de la 0-0 la acel scor.

Pe o foaie cu pătrăţele se stabileşte un sistem de coordonate în care o intersecţie primeşte coordonatele (0,0), astfel încât fiecare intersecţie a caroiajului are coordonate numere întregi. Pe acest caroiaj se desenează un pavaj cu dreptunghiuri, în care fiecare dreptunghi are o lăţime L şi o înălţime H date, iar punctul de coordonate (0,0) este un colţ de dreptunghiuri. În acest mod, fiecare intersecţie a pavajului are coordonate de forma (L*i,H*j), cu i şi j întregi.

Se mai dă o pereche de întregi x şi y şi se consideră segmentul de dreaptă ce uneşte punctul de coordonate (0,0) cu punctul de coordonate (x,y).

Se cere să se determine câte dreptunghiuri ale pavajului sunt intersectate de segmentul considerat. Un dreptunghi se consideră intersectat de segment dacă are cel puţin un punct interior comun. Cu alte cuvinte, dacă segmentul doar atinge colţul unui dreptunghi, nu se consideră că îl intersectează.

Concursul Interjudetean „MARIAN ŢARINĂ” 2015

#1654 NrVocRec C++

Să se scrie o funcție C++ recursivă care returnează numărul de vocale dintr-un şir de caractere transmis ca parametru.

#1633 Dublare1 C++

Să se scrie un subprogram C++ prin care se dublează prima cifră a unui număr natural n transmis ca parametru. Funcția întoarce rezultatul prin intermediul aceluiași parametru n.

Se citește un text cu cel mult 255 de caractere, litere mici și mari ale alfabetului englez și spații. Să se determine câte cuvinte au exact trei litere, cuvintele care încep și se termină cu vocală și lungimea celui mai lung cuvânt.

#1526 align

Andino este într-o mare dilemă: editorul lui de texte nu are funcţii de aliniere aşa că vă roagă să-l ajutaţi să alinieze un text, la stânga sau la dreapta.

ad-hoc

#865 Palat

Ileana Cosânzeana se mărită. În consecință a dat sfoară-n țară și au venit mai mulți Feți-Frumoși, dornici să primească mâna fetei, împreună cu palatul în care locuiește. Acesta este alcătuit din n*m camere, dispuse sub forma unei matrice cu n linii și m coloane.

În anumite camere nu se poate intra, deoarece acolo se află zmei răi. În celelalte se poate intra; mai precis se poate trece dintr-o cameră în altă cameră dacă se învecinează pe linie sau pe coloană. În una dintre camere se află Ileana Cosânzeana, iar în alte camere se afla câte un Făt-Frumos. Aceștia pot trece dintr-o cameră în alta, cu condiția să nu intre într-o cameră care conține un zmeu. Trecerea dintr-o cameră în alta a unui Făt-Frumos durează un minut.

Alegerea celui care va primi mâna Ilenei se face pe principiul primul venit, primul servit (suntem la capitolul Coada). Mai precis, se va căsători cu Ileana Cosânzeana acel Făt Frumos care ajunge primul la ea. Dacă ajung la Ileana Cosânzeana mai mulți Feți-Frumoși în același timp, deoarece este interzisă poligamia, Ileana se va căsători cu Făt-Frumos care la început era situat cât mai jos (pe o linie cu indice cât mai mare) și cât mai la dreapta (pe o coloană cu indice cât mai mare).

Aflați poziția inițială a lui Făt-Frumos care va primi mâna fetei.

Se consideră un șir de caractere format numai din litere mici ale alfabetului englez. Dacă șirul conține subșiruri consecutive care se repetă, el poate fi scris condensat. De exemplu, șirul mamateteter poate fi scris (ma)2(te)3r – subșirul care se repetă se scrie între paranteze rotunde, urmat de numărul de apariții.

Dându-se un șir în forma condensată, să se determine șirul în forma inițială.

#1600 s_p_c_2

Scrieţi un program care citeşte din fişierul de intrare şiruri de caractere de forma tip#cuvânt, unde cuvânt este un şir oarecare de litere iar tip poate fi una din literele S, P sau C, semnificaţia fiind subiect, predicat sau complement. Programul va afişa, în ordine lexicografică, toate propoziţiile având structura subiect predicat complement ce pot fi formate cu ajutorul cuvintelor citite. Datele de intrare se consideră a fi corecte.

Admitere Informatica Iasi, 2012 - varianta modificată

#1598 Coada1

Se consideră C o coadă de numere naturale, iniţial vidă. Se definesc 2 tipuri de operaţii.

Operaţia 1 : push X, adaugă elementul X în coadă. Dacă X există deja în coadă, se scot toate elementele din coadă, pana la întâlnirea lui, inclusiv X.

Exemplu: 
	C: 2 4 5 1 6
	Push 5
	C: 1 6 5 ( s-au scos 2, 4, 5).

Operaţia 2: query X, cere afişarea poziţiei elementului X în coada C. Dacă elementul nu există în coadă, se afişează -1.

Exemplu:
	C: 2 5 1 3 7
	Query 1
	Răspuns: 3

#1580 schimb

Se dau trei numere naturale n, k și p și n șiruri formate din litere mici ale alfabetului englez. Înlocuiți a k-a literă din fiecare șir cu a p-a literă din alfabet. Dacă șirul are mai puțin de k litere se va scrie oglinditul lui.

#1576 zona3

Se consideră o matrice cu n linii și m coloane. Spunem că o poziție este liberă dacă elementul de pe linia i și coloana j este egal cu 0 și 1 în caz contrar. Spunem despre mai multe elemente ocupate că formează o zonă, daca elementele se învecinează pe cele patru direcții (sus, jos, dreapta, stânga).

Calculați pentru fiecare zonă numărul de elemente și afișați noua matricea formată prin înlocuirea elementelor egale cu 1 cu numărul de elemente pe care îl are zona din care face parte elementul respectiv.

#1388 Colecție C++

Ajută-mă, te rog!”, spune Dudu. El vă cere să aflați care este numărul de vederi unice din colecția sa.

Olimpiada de Informatica, etapa pe Scoala, CNITV

#1539 apartenenta C++

Scrieţi în limbajul C/C++ definiţia completă a subprogramului apartenenta, care primeşte ca argument un număr natural nenul n şi returnează valoarea 1 dacă n aparţine mulţimii \(\scriptsize H = \{ 2^x \cdot 3^y \cdot 5^z \, | \, x, y, z \in N \}\), respectiv 0 în caz contrar.

#1538 SudEst

Fermierul Ion deţine un teren de formă pătrată, împărţit în NxN pătrate de latură unitate, pe care cultivă cartofi. Pentru recoltarea cartofilor fermierul foloseşte un robot special proiectat în acest scop. Robotul porneşte din pătratul din stânga sus, de coordonate (1,1) şi trebuie să ajungă în pătratul din dreapta jos, de coordonate (N, N). Traseul robotului este programat prin memorarea unor comenzi pe o cartelă magnetică. Fiecare comandă specifică direcţia de deplasare (sud sau est) şi numărul de pătrate pe care le parcurge în direcţia respectivă. Robotul strânge recolta doar din pătratele în care se opreşte între două comenzi.

Din păcate, cartela pe care se află programul s-a deteriorat şi unitatea de citire a robotului nu mai poate distinge direcţia de deplasare, ci numai numărul de paşi pe care trebuie să-i facă robotul la fiecare comandă. Fermierul Ion trebuie să introducă manual, pentru fiecare comandă, direcţia de deplasare.

Scrieţi un program care să determine cantitatea maximă de cartofi pe care o poate culege robotul, în ipoteza în care Ion specifică manual, pentru fiecare comandă, direcţia urmată de robot. Se va determina şi traseul pe care se obţine la recolta maximă.

OJI 2006, Clasa a X-a

#1536 Ecuatii

Să considerăm ecuaţii de gradul I, de forma: expresie_1=expresie_2. Expresiile specificate sunt constituite dintr-o succesiune de operanzi, între care există semnul + sau semnul - (cu semnificaţia binecunoscută de adunare, respectiv scădere). Fiecare operand este fie un număr natural, fie un număr natural urmat de litera x (litera x reprezentând necunoscuta), fie doar litera x (ceea ce este echivalent cu 1x).

De exemplu: 2x-5+10x+4=20-x. Observaţi că în ecuaţiile noastre nu apar paranteze şi necunoscuta este întotdeauna desemnată de litera mică x.

Scrieţi un program care să rezolve ecuaţii de gradul I, în formatul specificat în enunţul problemei.

OJI 2006, Clasa a X-a

#1511 FCautareRec C++

Scrieţi definiția completă a unei funcții C++ recursive care are ca parametri un număr natural n, un șir crescător X de numere reale având n elemente și un număr real v și care returnează poziția pe care apare în șir valoarea v. În cazul în care v nu apare în șir, se va returna valoarea -1. În cazul în care v apare în șir pe mai multe poziții, se va returna una dintre acestea.

Admitere Mate-Info UBB, iulie 2015

#1510 FCautare C++

Scrieţi definiția completă a unei funcții C++ care are ca parametri un număr natural n, un șir crescător X de numere reale având n elemente și un număr real v și care returnează poziția pe care apare în șir valoarea v. În cazul în care v nu apare în șir, se va returna valoarea -1. În cazul în care v apare în șir pe mai multe poziții, se va returna una dintre acestea.

Admitere Mate-Info UBB, iulie 2015

#1509 NrMaxim C++

Să se scrie o funcție care are ca parametru un număr natural n și returnează cel mai mare număr care poate fi obținut mutând, pe rând, prima cifră a numărului n și a celor obținute pe parcurs, pe ultima poziție. Nu se vor folosi șiruri de caractere și tablouri auxiliare.

Admitere Mate-Info UBB, iulie 2015

#1507 grupuri

Scrieți un program care, pentru o matrice pătratică dată, determină câte grupuri conţine.

Admitere Informatica Iasi, 2012

Anul acesta la serbarea de Crăciun, doamna învățătoare de la clasa a întâia a hotărât să aranjeze elevii pe mai multe rânduri, după înălțime. Pe primul rând (cel din spatele scenei) va aranja în ordinea lexicografică a numelor, elevii care au înălțimea maximă, apoi în fața lor, tot în ordinea lexicografică a numelor elevii care au următoarea înălțime, ș.a.m.d. Fiind cam de aceeași vârstă, mulți dintre elevi au înălțimi egale.

Scrieţi un program care să citească numărul natural N (reprezentând numărul de elevi), apoi în ordine de pe linii diferite numele și înălțimea fiecărui elev și care să determine:

a) Numărul de rânduri pe care vor fi așezați elevii
b) Numărul de elevi de pe fiecare rând, urmat de elevii de pe rândul respectiv în ordinea lexicografică a numelor.

Olimpiada Municipala Informatica Iasi 2016

Scrieţi în limbajul C/C++ definiţia completă a funcţiei norocoase, care primeşte ca argumente două numere naturale a şi b şi returnează câte numere norocoase se află în intervalul [a, b].

Olimpiada Națională de Matematică 2015, Clasa a V-a

#1432 Mutare1 C++

Scrieţi definiţia completă a subprogramului C/C++ aranjare, care are doi parametri, v şi n, prin care primeşte un tablou unidimensional cu maximum 10000 de numere naturale nenule şi, respectiv, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului astfel încât toate valorile impare să se afle pe primele poziţii, iar valorile pare în continuarea celor impare.

Variante Bacalaureat 2009

#1496 Harta1

O hartă este codificată printr-o matrice cu N linii și M coloane de elemente numere naturale. Valoarea 0 semnifică o zonă cu apă. Zonele de uscat sunt codificate prin valori între 1 și K. Celulele aparținând unei țări I sunt codificate cu valoarea I. Fiecare țară este împărțită în departamente. Prin definiție, un departament reprezintă o mulțime de celule de aceeași valoare, continuă pe linii și coloane (nu și diagonale).

Fiind dată o hartă codificată ca mai sus. să se determine:

a) Suprafața totală a apei.
b) Lista țărilor cu cele mai multe departamente, ordonată crescător.

Olimpiada locală de Informatică, Prahova, 2016

#1494 s_p_c

Scrieţi un program care citeşte din fişierul de intrare şiruri de caractere de forma cuvânt#tip, unde cuvânt este un şir oarecare de litere iar tip poate fi una din literele S, P sau C, semnificaţia fiind subiect, predicat sau complement. Programul va afişa, în ordine lexicografică, toate propoziţiile având structura subiect predicat complement ce pot fi formate cu ajutorul cuvintelor citite. Datele de intrare se consideră a fi corecte.

Admitere Informatica Iasi, 2012

#1493 Masca

Se consideră alfabetul compus din literele mici, de la a la z, fără diacritice. Se numeşte cuvânt un şir finit, eventual vid, de litere din alfabet. Se numeşte mască un şir de caractere din alfabet având eventual în plus caracterele ? şi * cu următoarea semnificaţie: caracterul ? înlocuieşte oricare din literele de la a la z (o singură literă) iar caracterul * înlocuieşte un cuvânt oarecare, eventual vid, format cu litere de la a la z.

Spre exemplu avem masca a?b*c. Dacă avem 3 cuvinte şi anume abbc, acbaac şi abac atunci primele 2 se potrivesc cu masca.

Considerându-se o listă de cuvinte, să se determine:

a) Numărul de cuvinte distincte.
b) Numărul de cuvinte distincte ce se potrivesc cu o mască dată, adică se pot obţine prin înlocuirea caracterelor ? şi * din mască.

Olimpiada locală de Informatică, Prahova, 2016

#1489 Bile1

Algorel a primit un set de n bile numerotate de la 1 la n pe care trebuie să le pună în trei cutii identice astfel încât în nicio cutie să nu fie două bile numerotate cu numere consecutive.

În câte moduri poate face Algorel acest lucru?

Olimpiada locală de Informatică, Prahova, 2016

Se dă un cuvânt format din litere ale alfabetului englez și cifre. Afișați toate permutările circulare spre stânga ale sale.

#1098 Reteta

Mama mea este profesoară de informatică, dar îi place foarte mult să gătească. Recent am descoperit caietul ei de reţete, care arată foarte neobişnuit. Fiecare reţetă este scrisă pe un singur rând pe care sunt precizate produsele folosite, cantităţile, precum şi ordinea în care se execută operaţiile. De exemplu:
(unt 50 zahar 250 ou 4)5
ceea ce înseamnă că se amestecă 50 grame unt cu 250 grame zahăr şi cu 4 ouă timp de 5 minute. Pentru fiecare produs mama foloseşte întotdeauna aceeaşi unitate de măsură, aşa că unităţile de măsură nu mai sunt precizate. Numele produsului este scris întotdeauna cu litere mici, iar produsele şi cantităţile sunt separate prin spaţii (unul sau mai multe). Produsele care se amestecă împreună sunt încadrate între paranteze rotunde; după paranteza rotundă închisă este specificat timpul de preparare.

Evident, mama are şi reţeţe mai complicate:
(((zahar 100 ou 3)5 unt 100 nuca 200)4 (lapte 200 cacao 50 zahar 100) 3)20

Să traducem această reţetă: se amestecă 100 grame zahăr cu 3 ouă timp de cinci minute; apoi se adaugă 100 grame unt şi 200 grame nucă, amestecând totul încă 4 minute. Se amestecă 200 ml lapte cu 50 grame de cacao şi 100 grame zahăr timp de 3 minute, apoi se toarnă peste compoziţia precedentă şi se amestecă totul timp de 20 minute.

Observaţi că înainte sau după parantezele rotunde pot să apară sau nu spaţii.

Dată fiind o reţetă să se determine timpul total de preparare, precum şi cantităţile necesare din fiecare produs.

OJI 2009, Clasa a X-a

Pentru o matrice patratica de mărime 2n , să se determine regula de parcurgere pe baza a 3 exemple si să se aplice .

#1478 EasyOCR

Se dă un tablou reprezentând o imagine care conține cifre. Scrieţi un program care să determine:

a) câte cifre sunt în imagine;
b) numărul de apariţii ale fiecărei cifre.

#1476 FSortare C++

Să se scrie o funcție C++ care sortează crescător elementele unei liste simplu înlănţuite.

#1460 serbare

La o serbare sunt n grupe de copii care poartă p tipuri de uniforme. Scrieţi un program care să afişeze pe ecran tipurile de uniforme în ordinea descrescătoare a numărului total de copii ce poartă fiecare tip de uniformă. Afişarea se va face pe o singură linie, valoriile fiind separate printr-un spaţiu.

Variante Bacalaureat 2007

#1434 Mutare2 C++

Scrieţi definiţia completă a subprogramului C/C++ modificare, care are doi parametri, v şi n, prin care primeşte un tablou unidimensional cu maximum 10000 de numere naturale nenule şi, respectiv, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului astfel încât toate valorile prime să se afle pe primele poziţii, iar valorile care nu sunt prime, în continuarea celor prime.

Mintea mea :D

Ajutați-l pe vrăjitorul Arpsod să găsească aria maximă unei suprafețe de înălțime maximă, după căderea ploilor de meteoriți.

Scrieţi un program care, citind de la tastatură cuvântul C, construieşte în memorie matricea reprezentării binare a cuvântului şi afişează pe ecran dimensiunea celei mai mari submatrici pătratice conţinând elemente având toate aceeaşi valoare (fie 0, fie 1).

Admitere Informatica Iasi, 2015

Dându-se o ecuaţie de gradul 2, să se scrie un program care determină soluţiile acestei ecuaţii.

#1456 Cuvant

Se consideră un cuvânt format din cel puțin două și cel mult 100 de caractere, numai litere mici ale alfabetului englez.

Scrieţi un program care citeşte de la tastatură un cuvânt de tipul precizat și afișează pe ecran mesajul DA în cazul în care cuvântul conține doar consoane şi, eventual, vocala i, sau mesajul NU în caz contrar.

Subiect Bacalaureat 2015

Se dau două propoziții formate din litere mari și mici ale alfabetului englez și spații. Să se afișeze în ordine alfabetică cuvintele care apar în ambele șiruri.

Să se scrie o funcţie care primeşte ca argumente două numere naturale a şi b şi returnează numărul de elemente din intervalul [a,b] care au cifra de control egală cu a.

#1428 Sume1

Se dă un număr natural N. Să se calculeze expresia:

\( E = (2^0 +2^1 + 2^2 + 2^3 + … + 2^N ) \% 1 000 000 007 \)

unde x % y reprezintă restul împărţirii lui x la y.

Moisil++, 2015

#876 Coada

Să se scrie un program care gestionează o coadă de numere întregi. Inițial coada este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:

  • push X – adaugă valoarea întreagă X în coadă;
  • pop – elimină elementul din coadă;
  • front – afișează elementul de la începutul cozii.

Programul va realiza asupra cozii operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.

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

Să se scrie un program care citește o propoziție și determină numărul de cuvinte care încep și se termină cu vocală.

Variante Bacalaureat 2009

#1369 Parcela

Se dau n și m reprezentând dimensiunile unui tablou bidimensional format din elementele 0 si 1. Se definește o parcelă ca fiind o grupare de elemente vecine cu valoarea 1. Să se determine numărul de parcele nr, aria maximă a unei parcele amax și respectiv numărul parcelei cu arie maximă pmax.

#1337 Susan C++

Eroul nostru Susan se află într-un turn de formă cubică, de latură n. El dorește să ajungă la comoara ascunsă în interiorul turnului. Din fericire, Susan a făcut rost de o hartă care îi indică cu exactitate coordonatele locului în care se află comoara din turn. Eroul nostru vrea să știe care este distanța minimă pe care o poate parcurge pentru a ajunge la comoară.

#873 Vase

Se dau dau două vase cu capacitatea A, respectiv B litri. Se cere să se măsoare cu ajutorul lor C litri de apă.

#1351 nano

În lumea lui Nano totul se construiește la nivel atomic. Știința a ajuns așa departe încât poate construi ”plăci” dreptunghiulare de atomi în care aceștia sunt aliniați perfect, pe un singur strat, formând un rastru. Nano dorește să comande la o firmă plăci pătrate de dimensiuni mari. Dimensiunile sunt atât de mari încât numărul de atomi dintr-o placă poate să fie scris cu până la 500 cifre. Firma i-a dat o listă cu bucățile de material de care dispune, pentru fiecare bucată fiind cunoscut numărul de atomi componenți, urmând ca Nano să aleagă doar acele bucăți din care se pot construi plăci pătrate.
Scrieți un program care citind numărul de atomi ai fiecărei bucăți de material din fișierul nano.in scrie în fișierul nano.out doar bucățile de material din care se pot face plăcile dorite de Nano.

#1346 PbInfo C++

Dându-se un șir de caractere și mai multe cuvinte, să se afle dacă există cuvinte care apar în şir.

Să se calculeze suma a două matrice rare .

Admitere Mate-Info UBB, 2015

Scrieţi definiția completă a subprogramului C++ ordonare care are 4 parametri: a, prin care primeşte un tablou unidimensional cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului și doi indici st dr.

Subprogramul ordonează crescător elementele tabloului a cu indici între st și dr, inclusiv aceștia,fără a modifica celelalte elemente ale tabloului.

Să se determine necunoscutele dintr-o listă de relații date.

Se dau 2 șiruri de caractere. Sa se afișeze toate caracterele primului șir ce se găsesc și în al doilea.

#800 Perfect C++

Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.

Să se scrie o funcție C++ care, pentru doi parametri, a și b, afișează pe ecran, separate prin câte un spațiu, în ordine descrescătoare, toate numerele perfecte din intervalul [a,b]. Dacă în interval nu există astfel de numere, subprogramul afișează pe ecran mesajul nu exista.

Variante Bacalaureat 2014

#1270 b16

Se dă un număr natural în baza 16. Să se transforme acest număr în baza 10.

#1307 Siruri1

Se citeşte un şir X de numere naturale cu n elemente. Scrieţi un program care determină şirul Y de numere prime distincte, care figurează la puterea întâi în cel puţin o descompunere ȋn factori primi a unui număr din șirul X. Dacă niciun element al şirului X nu are un factor prim la puterea întâi, atunci se va tipări mesajul Sirul Y e vid.

Admitere Mate-Info UBB, septembrie 2013

Se dă un triunghi de numere. Deduceți regula după care a fost format si afișați al n-lea sir al acestui triunghi.

#874 Atomi

Într-o galaxie îndepărtată există doar două elemente chimice. Cercetătorii le-au numit A şi B şi toate substanţele sunt alcătuite din aceste elemente. Mai precis, o substanţă este un şir definit astfel:

  • A şi B sunt substanţe, formate din câte un atom;
  • Ax şi By sunt substanţe, x şi y find numere naturale. Ax este formată din x atomi de tip A, iar By este formată din y atomi de tip B;
  • dacă S este substanţă atunci (S)x este substanţă, x fiind un număr natural. Dacă în S sunt p atomi, în (S)x vor fin p*x atomi;
  • dacă S şi T sunt substanţe atunci ST este substanţă. Dacă în S sunt x atomi, iar în T sunt y atomi, în ST vor fi x+y atomi.

Pentru o substanţă dată să se determine numărul atomilor de tip A şi numărul atomilor de tip B care o compun.

#1275 Jaina

Jaina are nevoie de ajutor pentru a ajunge la mentorul ei.

#1267 plaja

Fiind data o matrice de 0 si 1, sa se gaseasca cel mai mare dreptunghi care contine doar 0.

Să se găsească cel mai mare divizor comun al unui set de numere Fibonacci.

Să se determine numărul de șiruri de lungime 2 * n care conțin paranteze închise corect.

Se dau n numere naturale. Să se afișeze al k-ulea cel mai mic element din șir.

Sa se verifice dacă o listă simplu înlănțuită formează un palindrom.

Zoli și D’Umbră se pierd din nou prin labirint.

Tractor Runda II

#1248 carti2

Un filipinez cultivat are X cărți pe care dorește să le vândă.

Tractor Runda II

#1128 jucarii

La o grădiniță, cei m copii de la grupa mică s-au trezit în fața a n jucării diferite. Cel mai isteț dintre ei vă întreabă în câte moduri ar putea să-și aleagă fiecare câte o jucărie ?

Dându-se n fracții ireducitibile sortate crescător și un număr k să se determine numărul de subșiruri de exact k elemente în care diferența dintre două fracții consecutive este egală cu 1. De asemenea, prima fracție din subșir trebuie să nu fie supraunitara.

Runda Tractor I

#1240 Ab3

Să se rezolve n inecuații.

Runda Tractor I

  • Fișiere
  • Tudor Văran
  • Tudor Văran
  • Clasa 10
  • concurs

Zoli și D’Umbră s-au pierdut într-un labirint cu n x n camere dispuse pe cate n linii și n coloane. D’Umbră se află în camera (1, 1), iar Zoli se află în camera (n, n). Aceștia vor trebui să parcurgă labirintul pentru a se întâlni.

Runda Tractor I

Numerele iajb sunt numerele care pot fi scrise sub forma i * a + j * b. Cunoscând a și b și un număr n, să se determine valorile i și j pentru care se vor forma primele n numere iajb in ordine crescătoare.

Se dă n un număr natural nenul. Să se afle câte soluții are ecuația x1+x2+...+xn=0 în mulțimea {-1,0,1}.

Hackerul Gigel e pus pe șotii. El încearcă să suprasolicite o rețea de calculatoare cu un pachet de date corupt. Ajutați-l să paseze la inifinit pachetul între calculatoare!

Să se scrie o funcție C++ care inserează înaintea fiecărui element par al unei liste simplu înlănțuită dublul său.

Să se scrie o funcție C++ care inserează după fiecare element par al unei liste simplu înlănțuită dublul său.

Să se scrie o funcție C++ care inserează o anumită valoare înaintea unui element dat dintr-o lista simplu înlănțuită.

Să se scrie o funcție C++ care inserează o anumită valoare după un element dat dintr-o lista simplu înlănțuită.

Să se scrie o funcție C++ care determină șterge dintr-o lista simplu înlănțuită toate elementele pare.

Să se scrie o funcție C++ care determină șterge dintr-o lista simplu înlănțuită un element dat.

Să se scrie o funcție C++ care determină șterge dintr-o lista simplu înlănțuită elementul situat după un element dat.

#1175 FListaSuma C++

Să se scrie o funcție C++ care determină suma elementelor impare dintr-o lista simplu înlănțuită care sunt situate între două elemente pare.

Să se scrie o funcție C++ care determină câte perechi de elemente prime între ele sunt memorate într-o lista simplu înlănțuită.

Să se scrie o funcție C++ care determină câte perechi de elemente consecutive egale sunt memorate într-o lista simplu înlănțuită.

Să se scrie o funcție C++ care determină câte elemente valorile sunt memorate într-o lista simplu înlănțuită.

Cei m cowboys și cei n aliens s-au întâlnit în vestul sălbatic și, păstrând tradiția locului, s-au așezat în șir indian. Cum cowboys erau gazde primitoare și în special foarte precaute, s-au gândit că între doi cowboys consecutivi ar fi bine să fie cel mult un alien (din motive de securitate). De asemenea primul și ultimul din șir să fie cawboys. Dilema care s-a ivit a fost numărul de moduri în care s-ar putea așeza în șir indian ținând cont de condițiile de securitate impuse.

Să se scrie o funcție C++ care șterge primul element al unei liste simplu înlănțuită.

Să se scrie o funcție C++ care adaugă o valoarea la începutul unei liste simplu înlănțuită.

#1169 FAfisareLista C++

Să se scrie o funcție C++ care afișează pe ecran valorile memorate într-o lista simplu înlănțuită.

Să se scrie o funcție C++ care adaugă o valoarea la finalul unei liste simplu înlănțuită.

#1157 KSort2

Se dă un vector cu n elemente, numere naturale și un număr k. Ordonați crescător primele k elemente ale vectorului și descrescător ultimele n-k elemente.

Pentru sortare se va folosit metoda QuickSort sau MergeSort.

Se dau înălțimile a n copii, numerotați de la 1 la n, exprimate prin numere naturale. Afișați numerele de ordine ale copiilor în ordinea crescătoare a înălțimii lor.

Pentru sortare se va folosit metoda QuickSort sau MergeSort.

Se dă un vector x cu n elemente numere naturale, și un vector y cu m elemente, de asemenea numere naturale. Folosind metoda Divide et Impera, verificați pentru fiecare element al vectorului y dacă apare în x.

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului au număr par de cifre.

Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător.

Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele vectorului sunt egale.

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului sunt pare.

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă în șir există elemente prime.

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă în şir există elemente impare.

Ilinca este o fetiţă căreia îi place foarte mult să deseneze; ea a făcut multe desene pe care le-a numerotat de la 1 la d şi apoi le-a multiplicat (toate copiile poartă acelaşi număr ca şi originalul după care au fost făcute). În vacanţă s-a hotărât să-şi deschidă propria expoziţie pe gardul bunicilor care are mai multe scânduri; pe fiecare scândură ea aşează o planşă (un desen original sau o copie). Ilinca ţine foarte mult la desenele ei şi doreşte ca fiecare desen să apară de cel puţin k ori (folosind originalul şi copiile acestuia). Ilinca se întreabă în câte moduri ar putea aranja expoziţia. Două moduri de aranjare sunt considerate distincte dacă diferă cel puţin prin numărul unei planşe (de exemplu: 2 1 3 3 este aceeaşi expoziţie ca şi 2 3 1 3, dar este diferită de 2 1 3 1 şi de 1 3 3 1).

Cunoscând n numărul de scânduri din gard, d numărul desenelor originale şi k numărul minim de apariţii al fiecărui desen, să se determine în câte moduri poate fi aranjată expoziţia, ştiind că Ilinca are la dispoziţie oricâte copii doreşte.

OJI 2010, Clasa a X-a

Se consideră un şir de cuvinte separate două câte două printr-un spaţiu. Fiecare cuvânt este caracterizat prin numărul de ordine care reprezintă poziţia lui în şirul de cuvinte (primul cuvânt are numărul de ordine 1). Unui cuvânt i se pot aplica în mod repetat următoarele transformări: primul caracter al cuvântului (cel mai din stânga) se şterge de acolo şi se adaugă după ultimul caracter din cuvânt. Astfel, dintr-un cuvânt s cu k caractere se pot obţine alte k-1 cuvinte pe care le numim cuvinte obţinute din transformarea cuvântului s. De exemplu, dintr-un cuvânt format din 4 caractere c1c2c3c4, cuvintele obţinute prin transformarea lui sunt: c2c3c4c1, c3c4c1c2, c4c1c2c3.

Se caută în şirul de cuvinte prima pereche de cuvinte vecine (a,b), în care al doilea cuvânt din pereche (cuvântul b) este identic cu un cuvânt obţinut din transformarea lui a. Dacă există o astfel de pereche, se şterge cuvântul b din şir. Prin ştergerea cuvântului b din şir, acesta va avea mai puţin cu un cuvânt! Se repetă operaţia de căutare de mai sus până când în şirul rămas nu mai există o pereche (a,b) de cuvinte vecine, astfel încât b să fie obţinut prin transformarea lui a.

Se ştie că pe parcursul modificărilor, cuvintele nu-şi schimbă numerele de ordine pe care le-au avut iniţial.

Scrieţi un program care să citească şirul de cuvinte şi să afişeze:

a) numărul de ordine al primului cuvânt şters sau valoarea 0 în cazul în care nu se şterge niciun cuvânt
b) numerele de ordine ale cuvintelor rămase după finalizarea operaţiilor de modificare.

OJI 2010, Clasa a VII-a

#1079 Comp

Locuitorii planetei Eudora folosesc o reprezentare mai ciudată a numerelor naturale, astfel că orice număr natural va fi scris notând câte mii, sute, zeci, respectiv unităţi conţine acesta. De exemplu, numărul 3207 se poate reprezenta în mai multe moduri echivalente: 3m2s7u (3 mii 2 sute şi 7 unităţi), 32s0z7u (32 sute 0 zeci şi 7 unităţi), 32s7u, 3207u, etc.

Pentru a compara două numere naturale, eudorienii folosesc semnele < şi >, acestea având semnificaţia cunoscută şi pe Terra, iar pentru a calcula suma a două numere naturale utilizează semnul +.

Pentru a testa abilităţile pământenilor în privinţa lucrului cu numere naturale, eudorienii au trimis pe Terra un fişier text ce conţine N linii, fiecare linie fiind o comparaţie de forma:

expresie1>expresie2
sau
expresie1<expresie2

Observaţi că o comparaţie este constituită din două expresii separate prin semnul < sau prin semnul >.

O expresie este compusă dintr-un număr natural sau dintr-o sumă de două sau mai multe numere naturale, toate scrise în forma eudoriană. Fişierul nu conţine caractere spaţiu.

Scrieţi un program care determină câte dintre comparaţiile date utilizează semnul <, precum şi valoarea de adevăr a fiecărei comparaţii dintre cele N date (afişând 0 dacă acea comparaţie e falsă, respectiv 1 dacă acea comparaţie e adevărată).

OJI 2011, Clasa a VIII-a

#1077 Litere

Algorel a primit un joc care conţine n jetoane pe care sunt scrise litere mari ale alfabetului. Fiecare literă are asociat un cod format dintr-o singură cifră nenulă. Jetoanele se aşează în ordinea dată iniţial, iar prin citirea literelor de pe acestea, de la primul la ultimul jeton, se formează un cuvânt. Dacă se citesc numerele de pe fiecare jeton, începând de la primul la ultimul, se obţine un număr k1. Jocul continuă la fel, dar se aşează jetoanele începând de la al doilea la ultimul, obţinându-se un nou număr k2. Apoi, se aşează jetoanele începând de la al treilea la ultimul, obţinându-se un nou număr k3, ş.a.m.d. până se ajunge la aşezarea doar a ultimului jeton, caz în care se obţine numărul kn.

Scrieţi un program care citeşte numărul n de jetoane, cele n litere asociate jetoanelor, precum şi codurile asociate literelor, în ordinea apariţiei lor şi afişează:

a) numărul de perechi de litere consecutive din cuvântul iniţial care au proprietatea că o literă este vocală şi cealaltă este consoană (ordinea lor nu contează);
b) numărul k1, format din aşezarea iniţială a jetoanelor;
c) suma k1+k2+…+kn.

OJI 2011, Clasa a VII-a

Prin convenţie numim expresie aritmetică ponderată o expresie construită astfel:

  • expresia conţine numere întregi de cel mult 2 cifre despărţite prin virgulă;
  • numim k-şir o enumerare de k numere despărţite prin virgulă (k≥1);
  • o expresie poate conţine unul sau mai multe k-şiruri;
  • expresia foloseşte paranteze rotunde şi paranteze drepte.

Evaluarea expresiei se face după următoarele reguli:

  • dacă expresia conţine un singur k-şir atunci rezultatul expresiei este reprezentat de suma celor k numere. Exemplu: 2,4,1 = 2+4+1 = 7.
  • dacă în expresie întâlnim un k-şir delimitat de paranteze rotunde rezultatul evaluării acestui k-şir va fi reprezentat de suma maximă a unui secvenţe ce aparţine k-şirului, unde prin secvenţă se înţelege o succesiune de numere aflate pe poziţii consecutive în şir. Exemplu: (-2,4,-1,3,-2,-3,2) => secvenţa de sumă maximă este 4,-1,3 a cărui sumă este egală cu 6.
  • dacă în expresie întâlnim un k-şir delimitat de paranteze pătrate, elementele k-şirului fiind numerotate 1,2,..,k, rezultatul evaluării acestui k-şir va fi reprezentat de valoarea elementului aflat pe poziţia [(k+1)/2] dacă şirul ar fi ordonat crescător (mediana unui şir). Exemplu: [-2,9,10,3,5] => şirul ordonat [-2,3,5,9,10] => iar valoarea expresiei este egală cu 5.
  • evaluarea parantezelor se face dinspre interior spre exterior.

Fiind dată o expresie aritmetică ponderată să se determine:

  • câte numere întregi conţine expresia aritmetică;
  • care este valoarea expresiei aritmetice.

OJI 2011, Clasa a X-a

#1066 AI

Institutul Naţional de Robotică Avansată realizează o serie de teste ultimei generaţii de roboţi inteligenţi proiectaţi de specialiştii acestuia. Sistemul de testare se bazează pe o reţea de senzori formată din n segmente egale dispuse orizontal şi n segmente egale dispuse vertical. Distanţa între două segmente alăturate orizontale, respectiv verticale este de 1 metru. Fiecare segment orizontal este în contact cu fiecare segment vertical. Denumim nod un punct în care un segment orizontal şi unul vertical vin în contact. Segmentele sunt numerotate: cele orizontale de sus în jos începând de la 1 iar cele verticale de la stânga la dreapta începând de la 1.

Un nod va fi identificat prin două numere: primul reprezintă numărul segmentului orizontal iar al doilea numărul segmentului vertical care vin în contact în respectivul nod.

Într-unul dintre nodurile reţelei se află o ţintă. În alte două noduri se află câte o sursă ce emite o rază laser. O astfel de sursă emite raza într-o singură direcţie. Raza laser are o grosime neglijabilă. Cele două surse sunt astfel orientate încât raza emisă de fiecare “loveşte” ţinta. Cele două noduri în care sunt plasate sursele sunt astfel alese încât cele două raze nu se intersectează decât în nodul unde se află ţinta.

În alte două noduri ale reţelei se află câte un robot. Fiecare robot se poate deplasa dintr-un nod în cele vecine (cele aflate sus, jos, în stânga şi în dreapta), dar fără să iasă din cadrul reţelei. Roboţii se deplasează cu 1 m/secundă.

Se efectuează experimente în care roboţii sunt programaţi să se deplaseze prin reţea cu scopul de a proteja ţinta faţă de cele două raze laser. Un robot poate proteja ţinta fie ocupând nodul unde se află sursa, fie ocupând un nod prin care trece raza laser în drumul de la sursă către ţintă (razele laser nu “ocolesc” roboţii). Dimensiunea roboţilor este atât de mică încât, în acest al doilea caz, ei protejează ţinta faţă de raza laser doar când nodurile unde sunt sursa, ţinta şi robotul sunt coliniare iar robotul este între sursă şi ţintă. În momentul în care un robot ajunge într-un nod unde protejează ţinta faţă de una dintre raze, el se poate opri sau poate să îşi continue deplasarea. Dacă îşi continuă deplasarea astfel încât noua poziţie ocupată de acel robot şi poziţiile ţintei şi sursei nu mai sunt coliniare, atunci acel robot nu mai protejează ţinta. Din modul în care sunt alese poziţiile nodurilor pentru ţintă şi sursele laser rezultă că nu există nicio poziţie în care un robot să protejeze simultan ţinta faţă de ambele raze.

Fiecare robot este dotat cu o reţea neuronală şi poate învăţa din experimentele anterioare pe unde să se deplaseze. Pentru a mări capacitatea de adaptare a roboţilor, în k noduri ale reţelei sunt aşezate obstacole care fac ca roboţii să nu poată trece prin nodurile respective. Deoarece obstacolele folosite sunt transparente, razele laser pot trece prin acestea fără a le fi afectată intensitatea sau direcţia. Două sau mai multe obstacole dispuse pe acelaşi segment, în noduri alăturate, formează un zid. Lungimea unui zid este egală cu numărul de obstacole din care este alcătuit.

Cerințe:

1) Determinaţi lungimea maximă a unui zid.
2) Determinaţi numărul minim de secunde în care cei doi roboţi pot proteja ţinta faţă de cele două raze laser.

OJI 2011, Clasa a X-a

Se consideră un text memorat într-o matrice M, definită prin coordonatele colţului stânga sus (x1,y1) şi coordonatele colţului dreapta jos (x2,y2).

Prin aplicarea unui algoritm de compresie, matricei M i se asociază un şir de caractere, notat CM. Şirul de caractere CM este construit prin aplicarea următoarelor reguli:

  1. dacă matricea M are o singură linie şi o singură coloană atunci CM conţine numai caracterul memorat în matrice;
  2. dacă toate elementele matricei sunt identice atunci întreaga matrice M se comprimă şi CM este şirul kc, unde k reprezintă numărul de caractere din matrice, iar c caracterul memorat;
  3. dacă matricea este formată din caractere diferite şi are cel puţin două linii şi două coloane atunci:
    • matricea este împărţită în 4 submatrice A, B, C, D după cum este ilustrat în figura alăturată, unde coordonatele colţului stânga sus ale submatricei A sunt (x1,y1), iar coordonatele colţului dreapta jos sunt ((x2+x1)/2,(y2+y1)/2);
    • CM este şirul *CACBCCCD unde CA, CB, CC, CD sunt şirurile de caractere obţinute, în ordine, prin compresia matricelor A, B, C, D utilizând acelaşi algoritm;
  4. dacă matricea este formată din caractere diferite, are o singură linie şi mai multe coloane atunci CM este şirul *CACB unde A, B, CA, CB au semnificaţia descrisă la punctul 3.;
  5. dacă matricea este formată din caractere diferite, are mai multe linii şi o singură coloană atunci CM este şirul *CACC unde A, C, CA, CC au semnificaţia descrisă la punctul 3.;

Dat fiind şirul de caractere CM ce se obţine în urma aplicării algoritmului de compresie asupra unei matrice M de dimensiune NxN să se determine:

  1. numărul de împărţiri care au fost necesare pentru obţinerea textului compresat;
  2. matricea iniţială din care provine textul compresat.

OJI 2012, clasa a X-a

#1031 Culori2

Pasiunea Mirunei este să coloreze. Vacanţa trecută şi-a petrecut-o la bunica ei la ţară şi pentru că se cam plictisea s-a gândit să vopsească gardul de la casa bunicii.

Gardul este compus din N scânduri dispuse una lângă alta. Miruna a găsit în garajul bunicii 5 cutii de vopsea de culori diferite: albă, albastră, roşie, verde şi galbenă. Când a vopsit gardul, Miruna a respectat următoarele reguli:

  1. Dacă o scândură era vopsită cu alb, următoarea scândură o vopsea obligatoriu cu albastru
  2. Dacă o scândură era vopsită cu albastru, atunci următoarea scândură o vopsea cu alb sau roşu
  3. Dacă o scândură era vopsită cu roşu, atunci următoarea scândură o vopsea cu albastru sau verde
  4. Dacă o scândură era vopsită cu verde, atunci următoarea scândură o vopsea cu roșu sau galben
  5. Dacă o scândură era vopsită cu galben, atunci următoarea scândură o vopsea obligatoriu cu verde

După ce a și-a terminat treaba Miruna își admira “opera de artă” și se întreba în câte moduri diferite ar fi putut să vopsească gardul bunicii.

OJI 2012, clasa a a X-a

În câte moduri putem aranja numerele de la 1 la n astfel încât numerele pare să fie situate pe poziții impare iar cele impare pe poziții pare ?

Se dă un șir cu n elemente, numere întregi. Folosind metoda MergeSort, ordonați crescător elementele acestui șir.

Se dă un șir cu n elemente, numere întregi. Folosind metoda QuickSort, ordonați crescător elementele acestui șir.

#1023 Cmmdc3

Se dă un sir cu n elemente, numere naturale nenule. Folosind metoda Divide et Impera, determinaţi cel mai mare divizor comun al elementelor acestui șir.

#1020 MaxPrim

Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element prim din acest șir.

#1019 Maxim6

Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determinați cel mai mare element din acest șir.

Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determinați câte elemente impare sunt în acest șir.

Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determinați suma elementelor pare din acest șir.

#1015 SumVec

Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determinați suma elementelor acestui șir.

Să se determine numărul submulțimilor cu k elemente ale unei mulțimi cu n elemente.

În câte moduri putem aranja n persoane pe n locuri astfel încât suma dintre numărul persoanei și numărul locului să fie divizibilă cu p?

Se dau datele de naștere a n persoane, numerotate de la 1 la n, în forma an luna zi. Să se determine numărul de ordine al celei mai tinere și al celei mai în vârstă persoană dintre cele date.

Se dau a, b, c și p numere naturale, astfel încât a ≥ b + c și p număr prim. Să se afle dacă numărul \( { a! \over b!\ \cdot \ c! } \) este divizibil cu p, și să se afle exponentul lui p în descompunerea în factori primi a acestui număr.

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.

#1003 Baze1

Se dau două numere b1 b2, reprezentând două baze de numeraţie şi două şiruri de cifre x y, reprezentând două numere: x în baza b1, y în baza b2. Determinaţi suma numerelor x şi y în baza 10.

#1000 CNP

Se consideră un fişier care conţine informaţii despre mai multe persoane, sub o formă nestructurată. Informaţiile sunt dispuse pe linii de maxim 200 de caractere şi pot conţine CNP-uri valide. Ştiind că CNP-ul unei persoane este un şir de exact 13 cifre consecutive, scrieţi un program care determină şi scrie în fişierul de ieșire, pe linii distincte, toate CNP-urile extrase din text. Dacă în fișierul de intrare nu se află niciun CNP, în fișierul de ieșire se va afișa numai valoarea 0.

#996 Div3

Se dă un şir cu n elemente, numere naturale. Să se afişeze elementele şirului pentru care suma cifrelor este divizibilă cu 3.

Se dă un şir cu n elemente, numere naturale. Să se afişeze elementele şirului care sunt termeni ai şirului lui Fibonacci.

Se dă un şir cu cel mult 255 de caractere. Să se determine câte vocale conţine.

Se va defini şi utiliza subprogramul apcar, cu doi parametri:

  • s – un şir cu cel mult 255 de caractere
  • c – un caracter

care returnează numărul de apariţii ale caracterului c în şirul s.

Se dă o matrice pătratică cu n linii și n coloane, numerotate de la 1 la n și elemente numere naturale. Să se determine suma elementelor aflate strict deasupra diagonalei secundare a matricei.

Se va defini și folosi subprogramul sub, cu 3 parametri:

  • n – dimensiunea matricei
  • x – matricea
  • k – un număr natural, 1 < k ≤ 2*n

care va returna suma tuturor elementelor aij din matrice pentru care i + j = k.

Să se scrie un program care citește o listă de cuvinte şi le afişează în ordine alfabetică.

#988 Prime

Se dă un tablou cu n elemente, numere naturale. Să se afișeze numerele prime din șir, în ordinea în care apar în șir.

Se va defini și apela subprogramul prim, care verifică dacă un număr natural este prim.

Se dă o matrice pătratică cu n linii și n coloane și elemente numere naturale. Să se afișeze indicii liniilor pentru care suma elementelor este număr par.

Se va defini și folosi subprogramul suma, cu 3 parametri:

  • x – matricea
  • n – dimensiunea matricei
  • p – un număr natural, 1 ≤ p ≤ n

care va returna suma elementelor de pe linia p a matricei x.

Scrieți definiția completă unui subprogram C++ care realizează ștergerea dintr-un tablou unidimensional dat a elementelor cu indici între două valori date.

Variante Bacalaureat 2009

Dintre n puncte date prin coordonatele lor, să se determine numărul maxim de puncte coliniare.

Se dau două şiruri de caractere s şi t. Să se elimine din s toate apariţiile lui t.

Se dă o propoziție formată din litere mici ale alfabetului englez, spații și semnele de punctuație ,.. Determinați un cuvânt palindrom din propoziție, primul în ordine alfabetică.

Se dă o propoziție care conține numai litere mici ale alfabetului englez și spații. Să se afișeze cuvintele din propoziție care conțin numai vocale.

Se dă un șir de caractere. Să se determine câte vocale din șir sunt cuprinse între două consoane.

#964 cod

Olimpiada de Informatică, etapa pe sector, Bucureşti, 2007

  • Fișiere
  • Silviu Candale
  • Carmen Minca
  • Clasa 10
  • concurs

#957 Zana

Castelul Zânei Spiriduşilor este construit pe o suprafaţă dreptunghiulară având n*m camere identice, de formă pătratică, dispuse câte m pe direcţia Ox şi câte n pe direcţia Oy ca în desenul de mai jos în care n=3 şi m=6. Din fiecare cameră se poate intra în orice cameră învecinată, cameră care are un perete comun cu acesta. Fiecare cameră este identificată prin coordonatele sale, ca în figură.

În castel, trăiesc k spiriduşi împreună cu Zâna lor. Fiind în curând aniversarea zilei de naştere a Zânei, fiecare spiriduş a pregătit câte un cadou pe care îl ascunde, nevăzut de ceilalţi, într-una din camerele castelului. Tradiţia acestei sărbătoriri, impune următoarele reguli:

  1. În căutarea cadourilor, Zâna porneşte din camera de coordonate (1,1). Ea se deplasează prin camerele castelului cât timp în aceste camere nu se află niciun cadou.
  2. Căutarea se încheie în momentul în care Zâna intră într-o cameră în care se află cel puţin un cadou. Zână va primi toate cadourile aflate în acestă cameră, restul cadourilor vor dispărea.

Scrieţi un program care să citească din fişierul zana.in numerele naturale n, m, k şi cele k coordonatele ale camerelor în care spiriduşii au ascuns cadourile, şi care să determine:

a) numărul n1 maxim de cadouri pe care le poate primi Zâna în urma respectării regulilor;
b) numărului n2 al camerelor în care poate ajunge Zâna respectând regulile, camere ce conţin fiecare câte n1 cadouri.

Olimpiada de Informatică, etapa pe sector, Bucureşti, 2010

Se dă o matrice cu n linii și m coloane și elemente 0 sau 1, reprezentând planul unui teren în care 0 reprezintă o zonă accesibilă, iar 1 reprezintă o zonă inaccesibilă. O zonă a terenului are ca și coordonate linia și coloana corespunzătoare din matrice. Într-o zonă cunoscută a matricei se află un robot, iar în altă zonă, e asemenea cunoscută, se află o roboțică. Determinați numărul minim de pași prin care robotul va ajunge la roboțică. Dacă nu este posibil ca robotul să ajungă la roboțică, rezultatul va fi -1.

#72 FSumVec C++

Scrieți definiția completă unui subprogram C++ care returnează suma elementelor unui tablou unidimensional cu indici din afara unui interval dat.

Variante Bacalaureat 2009

#938 FSumRec C++

Scrieți definiția completă unui subprogram C++ recursiv care returnează suma elementelor unui tablou unidimensional transmis ca parametru.

Variante Bacalaureat 2009

#1863 NumarareRec C++

Scrieţi definiția completă a subprogramului recursiv numarare, care primeşte prin parametrul v un tablou unidimensional cu cel mult 100 de elemente întregi, iar prin parametrul n numărul efectiv de elemente din v.

Subprogramul returnează numărul de perechi de elemente vecine din tabloul v care sunt egale.

Se dau în plan, un punct și un segment. Să se determine distanța minimă de la punctul dat la un punct aparținând segmentului.

Se dau în plan, un punct și o dreaptă. Să se determine distanța de la punct la dreaptă.

Se dau coordonatele în plan pentru n puncte. Să se afișeze valoarea ariei poligonului pe care acestea îl formează.

Se dau puncte distincte în plan. Asociem fiecărui punct semidreapta care pornește din originea sistemului de coordonate și trece prin acel punct. Să se afișeze punctele în ordine crescătoare a unghiului pe care semidreapta asociată îl face cu semidreapta spre plus infinit a axei OX. Dacă două unghiuri sunt egale se va afișa punctul cel mai apropiat de origine.

Se dau două segmente în plan, specificate prin coordonatele capetelor. Să se verifice dacă au cel puțin un punct comun.

Se dau un punct și un segment în plan. Să se verifice dacă punctul se găsește pe segment.

Se dau coordonatele în plan a trei puncte. Să se afișeze valoarea ariei triunghiului pe care îl formează.

Se dau coordonatele în plan a două puncte. Să se afișeze pătratul distanței dintre ele.

#926 FSumDiv3Rec C++

Scrieți definiția completă unui subprogram C++ recursiv care returnează suma elementelor divizibile cu 3 ale unui tablou unidimensional transmis ca parametru.

Variante Bacalaureat 2009

Scrieți definiția completă a subprogramului recursiv P care primeşte prin intermediul parametrului n un număr natural nenul (n≤100), iar prin intermediul parametrului x un tablou unidimensional cu n componente întregi, de maximum opt cifre fiecare.

Subprogramul furnizează prin intermediul parametrului mini valoarea minimă din tabloul x, prin intermediul parametrului maxi valoarea maximă din x, iar prin intermediul parametrului sum suma elementelor din tabloul x.

Variante Bacalaureat 2009

#924 MultipluRec C++

Scrieţi definiția completă a subprogramului recursiv C++ multiplu care are 3 parametri: a, prin care primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000, n, numărul efectiv de elemente ale tabloului şi k, un număr natural.

Subprogramul returnează numărul de elemente din tablou care sunt multipli ai numărului k şi au ultima cifră egală cu k.

Variante Bacalaureat 2009

Să se determine maximul a două fracţii date.

Se dau coordonatele carteziene a n puncte în plan. Să se determine distanța maximă dintre un punct dat și originea sistemului de coordonate și numărul de puncte situate la acea distanță față de origine.

Se dă un tablou cu n elemente, numere naturale. Să se înlocuiască fiecare element din tablou care nu este număr prim cu cel mai mic număr prim, mai mare decât el.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
  • prim, care verifică dacă un număr natural este prim
  • urmatorul_prim, care determină pentru un număr dat cel mai mic număr prim, mai mare decât acesta, folosind subprogramul prim
  • inloc, care realizează înlocuirile cerute.

În programele C/C++ nu se vor folosi variabile globale.

Pentru un număr natural x mai mare decât 1 numim redusul lui x cel mai mic număr natural care are exact aceiași divizori primi ca și x.

Se dă un tablou cu n elemente, numere naturale mai mari decât 1. Să se înlocuiască fiecare element din tablou cu redusul său și apoi să afișeze elementele din tabloului ordonate descrescător.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
  • redus, care determină pentru un număr dat redusul său
  • sortare, care sortează descrescător un tablou
  • inloc, care realizează înlocuirile cerute.

În programele C/C++ nu se vor folosi variabile globale.

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.

Să se scrie o funcție C++ recursivă care să determine numărul de cifre egale cu zero ale unui număr natural transmis ca parametru și să întoarcă rezultatul prin intermediul unui parametru de ieșire.

#918 SumCifRec1 C++

Să se scrie o funcție C++ recursivă care determină suma cifrelor unui număr natural n transmis ca parametru și întoarce rezultatul prin intermediul unui parametru de ieșire.

#917 CmmdcRec1 C++

Să se scrie o funcție C++ recursivă care determină cel mai mare divizor comun a două numere transmise ca parametri și întoarce rezultatul prin intermediul unui parametru de ieșire.

Să se scrie o funcție C++ recursivă care determină factorialul unui număr transmis ca parametru și întoarce rezultatul prin intermediul unui parametru de ieșire.

Se dă un șir de caractere ce conține doar litere mici ale alfabetului englez. Să se afișez cel mai lung subșir care apare de cel puțin două în șirul dat.

Se dă un tablou cu n elemente, numere naturale. Să se elimine din tablou toate elementele care sunt palindrom.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
  • palindrom, care verifică dacă un număr dat ca parametru este palindrom
  • eliminare, care elimină din tablou un element a cărui poziție este dată ca parametru.

În programele C/C++ nu se vor folosi variabile globale.

Se dă un vector cu n elemente numere întregi, n fiind număr par. Să se ordoneze crescător elementele din prima jumătate a vectorului și descrescător elementele din a doua jumătate.

Se vor defini și apela următoarele subprograme:

  • citire, care citește valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează elementele tabloului, separate prin exact un spațiu
  • sortare, care ordonează elementele vectorului cuprinse între doi indici transmiși ca parametru. Criteriul de ordonare (crescător/descrescător) va fi transmis ca parametru.

În programele C/C++ nu se vor folosi variabile globale.

#912 PrimeVecine C++

Să se scrie o funcție C++ care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametrii de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare decât n.

#911 Cifre6 C++

Să se scrie o funcție C++ care primește ca parametri două numere n și k și determină cel mai mare număr care poate fi scris cu k cifre ale lui n. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.

#910 KPrefix C++

Să se scrie o funcție C++ care primește ca parametri două numere n și k și determină numărul format din primele k cifre ale lui n. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.

#909 PermCircCif C++

Să se scrie o funcție C++ care să realizează permutarea circulară spre stânga a cifrelor unui număr natural. Numărul este transmis prin intermediul unui parametru care se întoarce din funcție modificat.

Scrieți definiția completă a funcției C++ afisare care primește doi parametri a și b și afișează pe ecran, în ordine crescătoare, numerele naturale prime cuprinse între a și b, inclusiv acestea.

Scrieți definiția completă a funcției C++ afisare care primește doi parametri a și b și afișează pe ecran, în ordine crescătoare, numerele naturale cuprinse pare între a și b, inclusiv acestea.

Variante Bacalaureat 2009

#906 SumaCifre C++

Să se scrie o funcție C++ care să determine suma cifrelor pare și suma cifrelor impare pentru un număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.

#905 DetCifre C++

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

#904 Concat C++

Să se scrie o funcție C++ care primește doi parametri a și b și returnează numărul obținut prin concatenarea lui a cu b.

#903 Cezar

În criptografie, cifrul Caesar este una dintre cele mai simple și mai cunoscute modalități de criptare a unui text. Este un cifru cu substituție, în care fiecare literă textul inițial este înlocuită cu o literă care se află în alfabet la o distanță fixă față de cea înlocuită. Această metodă este numită așa după Iulius Cezar, care o folosea pentru a comunica cu generalii săi.
De exemplu, cu o deplasare de 3 poziții, A este înlocuit cu D, B devine E și așa mai departe – în final X devine A, Y devine B, Z devine C. Celelalte caractere din text rămân nemodificate. Astfel, textul ana are mere devine dqd duh phuh.

Să se scrie un program care citește un text și un număr reprezentând deplasarea și îl criptează folosind cifrul Cezar cu deplasarea dată.

#902 Factorial2 C++

Să se scrie o funcție C++, cu un parametru, n, care returnează cel mai apropiat număr de n care este factorialul unei valori.

#900 OrdonareF1 C++

Scrieţi definiția completă a subprogramului C++ ordonare care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului.

Subprogramul ordonează descrescător elementele tabloului a, fără a returna valori.

#899 OrdonareF C++

Scrieţi definiția completă a subprogramului C++ ordonare care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului.

Subprogramul ordonează crescător elementele tabloului a, fără a returna valori.

#898 SumFactCif C++

Să se scrie o funcție C++ care să returneze suma factorialelor cifrelor unui număr natural transmis ca parametru.

#897 SumCifF C++

Să se scrie o funcție C++ care să returneze suma cifrelor unui număr natural transmis ca parametru.

#896 FactorialF C++

Să se scrie o funcție C++ care să returneze pentru un număr natural n transmis ca parametru valoarea lui n!, adică 1•2•...•n.

#1826 ZeroF C++

Să se scrie o funcție C++ care să returneze pentru un număr natural n transmis ca parametru numărul de cifre zero de la finalul lui n! = 1•2•...•n.

#895 PermutarePF C++

Scrieţi definiția completă a subprogramului C++ permutare care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000 și n, numărul efectiv de elemente ale tabloului.

Subprogramul verifică dacă elementele vectorului a reprezintă o permutare fără puncte fixe a mulțimii {1,2,...,n} și returnează valoarea 1 în caz afirmativ, respectiv 0 în caz negativ.

#894 CifMinMax C++

Să se scrie o funcție C++ care să determine cea mai mare și cea mai mică cifră a unui număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.

Se dă un șir de caractere format din cuvinte, separate prin spații. Cuvintele conțin doar litere mici ale alfabetului englez. Afișați, în ordine lexicografică, cuvintele distincte din șir.

Limba păsărească este foarte simplă; și asemănătoare cu limba română! Un text scris în română se traduce în păsărește astfel: după fiecare vocală se inserează litera p și vocala respectivă.

Se dă o propoziție scrisă în limba păsărească. Să se traducă în limba română.

Limba păsărească este foarte simplă; și asemănătoare cu limba română! Un text scris în română se traduce în păsărește astfel: după fiecare vocală se inserează litera p și vocala respectivă.

Se dă o propoziție scrisă în limba română. Să se traducă în păsărească.

Se dă o propoziție formată din litere mari și mici ale alfabetului englez, cifre, spații și semne de punctuație, în care literele mari și mici se consideră identice. Determinați vocala din șir cu număr maxim de apariții.

Se citește un șir format din cel mult 255 caractere, litere mici ale alfabetului englez. Să se determine ce mai lungă secvență din șir formată numai din consoane.

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 dă un şir de caractere ce conţine cuvinte formate din litere mici ale alfabetului englez, separate prin unul sau mai multe spații. Să se determine câte cuvinte din sir sunt anagrame ale ultimului cuvânt, fără a fi identice cu acesta.

Harta unei galaxii îndepărtate are forma unei matrice cu n linii și m coloane, în care fiecare element corespunde unei planete. Unele planete sunt locuibile, altele sunt afectate de radiații nucleare și nu pot fi locuite. Deplasarea prin galaxie se poate face doar de la o planetă la alta, cu condiția să fie ambele locuibile și să se învecineze pe linie sau pe coloană (teleportarea și zborul hiperluminic nu au fost încă inventate).

În această galaxie există patru imperii, având ca nume litere mari diferite ale alfabetului englez, iar capitalele lor sunt situate în cele patru colțuri ale matricei. Ele își dispută din cele mai vechi timpuri controlul planetelor locuibile din galaxie, dar acum au ajuns la un acord: fiecare imperiu va controla planetele locuibile situate față de el la o distanță mai mică decât față de celelalte trei imperii. Dacă o planetă se află la aceeași distanță minimă față de două sau mai multe imperii, ea va rămâne necontrolată de niciun imperiu. Planetele nelocuibile nu fac parte din niciun imperiu. Prin distanța dintre două planete se înțelege distanța minimă dintre ele.

Afișați harta galaxiei în care planetele sunt marcate în conformitate cu imperiul care le controlează.

Se consideră o clădire de formă dreptunghiulară, formată din n*m camere dispuse sub forma unei matrice cu n linii și m coloane. Anumite camere sunt ocupate şi nu pot fi vizitate, celelalte sunt libere și pot fi vizitate. Dintr-o cameră se poate trece în altă cameră dacă ambele sunt libere și se învecinează pe linie sau pe coloană.

În anumite camere sunt paznici. Din motive de securitate, paznicii se pot deplasa din camera inițială în anumite camere libere din apropiere, dar fără a se îndepărta la o distanță mai mare decât o valoare cunoscută. Fiecare paznic va verifica periodic camerele libere în care poate ajunge.

Să se determine numărul de camere din clădire care nu sunt verificate de niciun paznic.

Se consideră harta unei suprafețe deșertice, dată sub forma unei matrice cu n linii și m coloane, formată din n*m zone. Fiecare zonă poate fi accesibilă sau inaccesibilă. Dintr-o zonă accesibilă se poate trece în altă zonă accesibilă învecinată cu prima pe linie sau pe coloană.

Un călător dorește să traverseze deșertul de la nord (prima linie) la sud(ultima linie). Pentru aceasta el poate sa aleagă oricare zonă accesibilă de pe prima line și dorește să ajungă pe ultima linie cu număr minim de pași.

#882 Lac

Se dă harta unui lac de formă dreptunghiulară, împărțit în n*m zone dispuse sub forma unei matrice cu n linii și m coloane. Zonele pot fi acoperite cu apă, sau pot fi zone de uscat. Zonele de uscat care sunt învecinate pe linie sau pe coloană formează insule sau peninsule. Peninsule conțin cel puțin o zonă de uscat pe marginea lacului (matricei), în timp ce insulele sunt situate în întregime în interiorul lacului.

Cunoscând harta lacului, determinați numărul de insule și numărul de peninsule.

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.

Se dă o tablă dreptunghiulară formată din n linii și m coloane, definind n*m zone, unele dintre ele fiind libere, altele conținând obstacole. Într-o zonă precizată se află un șoarece care se poate deplasa pe tablă trecând din zona curentă în zona învecinată cu aceasta pe linie sau pe coloană. Scopul sau este să ajungă la o bucată de brânză aflată într-o zonă de asemenea precizată, fără a părăsi tabla, fără a trece prin zone care conțin obstacole și fără a trece de două ori prin aceeași zonă.

Determinați o modalitate prin care șoarecele poate să ajungă la bucata de brânză.

Se consideră un șir de n intervale închise întregi. Două intervale consecutive în șir care au intersecția nevidă se reunesc și se înlocuiesc în șir cu intervalul reuniune. Operația se repetă până când nu mai sunt în șir două intervale consecutive cu intersecția nevidă.

Să se determine câte intervale există în șir după realizarea acestor operații.

Gigel are un set de n cuburi. Fiecare cub este marcat cu un număr natural, de la 1 la n și i se cunoaște lungimea laturii – număr natural. Cu o parte dintre aceste cuburi Gigel va construi o stivă, astfel:

  • fiecare cub se analizează o singură dată, în ordinea numerelor marcate;
  • dacă stiva nu conține niciun cub, cubul curent devine baza stivei
  • dacă cubul curent are mai latura mai mică sau egală cu cubul din vârful stive, se adaugă pe stivă;
  • dacă cubul curent are latura mai mare decât cubul din vârful stivei, se vor înlătura de pe stivă cuburi (eventual toate) până când cubul curent are latura mai mică sau egală cu cubul din vârful stivei.

Să se afișeze numerele de pe cuburile existente la final în stivă, de la bază spre vârf.

#875 Stiva

Să se scrie un program care gestionează o stivă de numere întregi. Inițial stiva este vidă. Programul va citi de la tastatură o listă de operații, care pot fi:

  • push X – adaugă valoarea întreagă X pe stivă;
  • pop – elimină elementul din vârful stivei;
  • top – afișează elementul din vârful stivei.

Programul va realiza asupra stivei operațiile citite, în ordine. Afișările se fac pe ecran, câte o valoare pe linie.

Se citeşte un număr natural n. Să se scrie n ca sumă de puteri crescătoare ale lui 2.

#870 Depou

Se consideră un depou de cale ferată precum cel din imagine:

Pe linia A se află n vagoane, numerotate cu valori distincte de la 1 la n, într-o ordine oarecare. Vagoanele trebuie mutate pe linia C, în ordinea 1 2 .. n. Pentru aceasta se poate muta câte un vagon de pe o linie pe alta, în ordinea indicată de săgeți:
A -> B, A -> C sau B -> C.

Să se determine o succesiune de operații care să mute toate vagoanele de pe linia A pe linia C în ordinea dorită.

Se consideră o clădire de formă dreptunghiulară, împărțită în n*m camere, dispuse sub forma unei matrice cu n linii și m coloane. Dintr-o cameră se poate trece în oricare dintre cele 4 camere vecine pe linie sau pe coloană. Unele camere sunt închise, și în ele nu se poate intra deloc. Trecerea dintr-o cameră în altă cameră durează un minut.

Camerele formează zone. O zonă este alcătuită dintr-un număr maxim de camere cu proprietatea că oricum am alege două camere din zonă se poate ajunge dintr-o cameră în alta trecând doar prin camere libere.

În anumite camere se află echipe de pompieri. Fiecare echipă deservește zona din care face parte camera echipei.

S-a constatat că așezarea echipelor în camere nu este tocmai corectă. Mai precis, există zone care nu sunt deservite de nicio echipă de pompieri. Pentru corectarea acestei probleme există două operații posibile:

  • mutarea unor echipe din camera curentă în altă cameră – operație care costă 1 leu
  • crearea unor echipe noi și plasare lor în camere – operație care costă 2 lei

Să se determine costul minim al operațiilor necesare, astfel încât fiecare zonă din clădire să fie deservită de cel puțin o echipă de pompieri.

Se consideră o clădire de formă dreptunghiulară, împărțită în n*m camere, dispuse sub forma unei matrice cu n linii și m coloane. Dintr-o cameră se poate trece în oricare dintre cele 4 camere vecine pe linie sau pe coloană. Unele camere sunt închise, și în ele nu se poate intra deloc. Trecerea dintr-o cameră în altă cameră durează un minut.

În anumite camere se află echipe de pompieri. Pentru o intervenție cât mai rapidă în caz de incendiu în una dintre camerele clădirii, este necesar să se știe, pentru fiecare cameră care este timpul minim în care o echipă de pompieri ajunge în acea cameră.

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.

#866 Acces

Se consideră o clădire de formă dreptunghiulară, împărțită în n*m camere, dispuse sub forma unei matrice cu n linii și m coloane. Dintr-o cameră se poate trece în oricare dintre cele 4 camere vecine pe linie sau pe coloană. Unele camere sunt închise, și în ele nu se poate intra deloc. Trecerea dintr-o cameră în altă cameră durează un minut.

În una dintre camere se află proprietarul clădirii, care dorește să afle, pentru fiecare dintre camere care este timpul minim necesar pentru a ajunge în acea cameră.

Parolele sunt cele mai utilizate modalități de stabilire a identității unei persoane. În IT este necesară utilizarea unor parole tari, care să nu poată fi ghicite cu ajutorul unor programe specializate.

În continuare, prin parolă tare înțelegem un sir de caractere care respectă următoarele condiții:

  • conține cel puțin 8 caractere
  • conține cel puțin o literă mică
  • conține cel puțin o literă mare
  • conține cel puțin o cifră
  • conține cel puțin un caracter dintre .,?!;:_@#

Se dă n o listă cu n parole. Să se determine câte dintre ele sunt parole tari.

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.

#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.

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.

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.

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ă.

Elevii clasei a X-a adună cadouri pentru sărbători. Fiecare elev realizează o listă cu cadourile adunate.

Şeful clasei trebuie să centralizeze listele primite. Ajutaţi-l să construiască o listă a care să conţină denumirea fiecărui cadou şi numărul total de cadouri de acel tip (cantitatea). Lista va fi ordonată descrescător după cantitate.

#808 Mutare C++

Scrieţi definiția completă a subprogramului C++ sub care are 3 parametri: n – prin care primește un număr natural, v, prin care primeşte un tablou unidimensional cu n elemente, numere naturale cu cel mult 4 cifre și x, prin care primeşte un număr natural. Cel puțin un element al tabloului v are valoarea x.

Subprogramul modifică ordinea valorilor din tablou, astfel încât toate valorile egale cu x să ocupe primele poziţii din v, iar celelalte valori să se regăsească în continuarea acestora, în ordinea inițială. Tabloul modificat este furnizat tot prin parametrul v.

Variante Bacalaureat 2013

Se dau n șiruri de paranteze rotunde sau pătrate. Să se stabilească, despre fiecare șir, dacă este corect parantezat.

#851 Email

Se dă o listă de adrese de email corecte ca structură. Să se determine câte adrese de email sunt asociate cu fiecare nume de domeniu.

Se dă un șir de paranteze rotunde care se închid corect (corect parantezat). Să se determine adâncimea parantezării.

Se dau n șiruri de paranteze rotunde. Să se stabilească, despre fiecare șir, dacă este corect parantezat.

Se dă un șir de caractere format din cuvinte, separate prin spații. Cuvintele conțin doar litere mici ale alfabetului englez. Afișați, în ordine lexicografică, cuvintele din șir și frecvența lor de apariție.

Se dă un număr natural n. Să se genereze o matrice pătratică de dimensiune 2n, după un pattern dat.

Se dă o matrice cu n linii și m coloane și elemente 0 sau 1, care reprezintă harta unui lac, în care 0 înseamnă uscat, iar 1 înseamnă apă.

Se dorește plasarea pe fiecare zonă cu uscat a unui crocodil sau a unui elefant astfel încât să nu fie două animale din aceeași specie în zone învecinate. În plus, se dorește ca numărul de crocodil să fie cât mai mare.

Să se determine câți crocodili și câți elefanți se pot plasa pe lac, astfel încât numărul de crocodili să fie cât mai mare.

Determinaţi numărul format din ultimele p cifre ale lui a n.

#842 Dinti

Pentru o serie de activități foarte sofisticate, Gigel are nevoie de un fierăstrău special, alcătuit din mai mulţi dinţi. Un fierăstrău de gradul n este format din două fierăstraie de gradul n-1, între care se află un dinte de mărime n. Un fierăstrău de gradul 1 are un singur dinte, de mărime 1.

Afișați un fierăstrău de grad n.

Se consideră un poligon militar, pe care este stabilit un sistem de axe de coordonate xOy. Se dau n bombe, numerotate de la 1 la n, pentru fiecare cunoscându-se coordonatele x y și puterea de distrugere p. La explozia unei bombe de putere p se va distruge totul în interiorul și pe cercul de centru x y și rază p, iar dacă există alte bombe în această zonă, vor exploda la rândul lor.

Dându-se numărul de ordine al unei bombe care explodează, să se determine câte bombe rămân intacte la finalul șirului de explozii declanșate.

#840 Croco

Se dă o matrice cu n linii și m coloane și elemente 0 sau 1, care reprezintă harta unui lac, în care 1 înseamnă uscat, iar 0 înseamnă apă.

Să se plaseze pe fiecare zonă cu uscat un crocodil sau un elefant astfel încât să nu fie două animale din aceeași specie în zone învecinate.

Se dă planul unei clădiri pătrate formate din n*n camere, sub forma unei matrice cu n linii și n coloane și elemente 0 sau 1. Camerele marcate cu 0 sunt libere, cel marcate cu 1 sunt inaccesibile și fiecare cameră are o pereche de coordonate, de forma I J, reprezentând linia și coloană pe care este situată camera. Dintr-o cameră liberă se poate trece în altă cameră liberă, cu condiția să se învecineze pe linie sau pe coloană.

Administratorul clădirii primește o listă cu coordonatele a m camere pentru care s-au găsit potențiali chiriași. Nu pot fi închiriate decât camerele libere și accesibile din exteriorul clădirii – adică să existe o succesiune de camere învecinate care începe pe o latură a clădirii și se încheie la camera respectivă.

Pentru fiecare dintre camerele din listă, verificați dacă poate fi închiriată sau nu.

#837 Fill

Se dă o matrice cu n linii și m coloane și elemente 0 sau 1, care reprezintă harta unei planete, în care 1 înseamnă uscat, iar 0 înseamnă apă. Două elemente 1 care se învecinează pe linie sau pe coloană (nu și pe diagonală) fac parte din același continent.

Să se determine câte continente sunt pe hartă.

Moș Crăciun locuiește la polul nord și pregătește cadouri pentru copii cuminți din clasa a X-a A, ajutat de mai mulți spiriduși. Datorită încălzirii globale, gheața se topește, formându-se mai multe banchize. Spiridușii care se află pe alte banchize decât Moș Crăciun nu-l mai pot ajuta pe acesta, spre disperarea generală.

Scrieți un program care să determine câți spiriduși se află pe aceeași banchiză cu Moș Crăciun și îl pot ajuta în continuare să pregătească cadouri pentru copii cuminți din clasa a X-a A.

Să se scrie o funcție C++ recursivă care afișează pe ecran, în ordine inversă, elementele unui vector transmis ca parametru.

Să se scrie o funcție C++ recursivă care afișează pe ecran elementele unui vector transmis ca parametru.

#834 ElimCifRec C++

Să se scrie o funcție C++ recursivă care primește ca parametri un număr natural n și o cifră c și returnează numărul obținut prin eliminarea din n a tuturor aparițiilor lui c.

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

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.

#829 AfisareRec C++

Să se scrie o funcție C++ recursivă care citește de la tastatură un șir de valori naturale și le afișează în ordine inversă.

Să se scrie o funcție C++ care să returneze rezultatul funcţiei Manna-Pnueli.

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

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

#825 CifMinRec C++

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

#824 CifMaxRec C++

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

#823 SumCifRec C++

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

Să se scrie o funcție C++ recursivă care să returneze numărul de cifre egale cu zero ale unui număr natural transmis ca parametru.

#1862 CntCifKRec C++

Să se scrie o funcție C++ recursivă cu trei parametri n, k, c și întoarce prin parametrul c numărul de cifre ale lui n care sunt mai mari sau egale decât k.

#821 CmmdcRec C++

Să se scrie o funcție C++ recursivă care returnează cel mai mare divizor comun a două numere transmise ca parametri.

Să se scrie o funcție C++ recursivă care returnează factorialul unui număr dat ca parametru.

#817 Zero C++

Scrieţi definiția completă a subprogramului C++ zero care are 2 parametri: n – prin care primește un număr natural și v, prin care primeşte un tablou unidimensional cu 2•n elemente, numere întregi cu cel mult 4 cifre. Numărul de elemente pare este egal cu numărul de elemente impare. Elementele au indici de la 1 la 2•n.

Subprogramul modifică tabloul astfel încât elementele impare să aibă indici impari, iar elementele pare să aibă indici pari. Tabloul modificat este furnizat tot prin parametrul v.

Variante Bacalaureat 2012

#811 Inlocuire0 C++

Scrieţi definiția completă a subprogramului C++ num care are 2 parametri: n – prin care primește un număr natural și v, prin care primeşte un tablou unidimensional cu n elemente, numere naturale cu cel mult 4 cifre.

Subprogramul înlocuieşte cu 0 fiecare valoare mai mică sau egală cu prima valoare din tablou. Tabloul modificat este furnizat tot prin parametrul v.

Variante Bacalaureat 2013

#810 nrA

Se dă un şir de caractere ce conţine cuvinte formate din litere mici ale alfabetului englez, separate prin unul sau mai multe spații. Înaintea primului cuvânt nu există spații, și nici după ultimul. Să se determine numărul de cuvinte din șir în care apare litera a.

Variante Bacalaureat 2013

Se dă un şir de caractere ce conţine cuvinte formate din litere mici ale alfabetului englez, separate prin unul sau mai multe spații. Înaintea primului cuvânt nu există spații, și nici după ultimul. Să se modifice șirul dat, astfel încât să se înlocuiască fiecare cuvânt cu exact trei litere din șir cu simbolul *.

#805 Valuri C++

Scrieţi definiția completă a subprogramului C++ valuri care are 2 parametri: n – prin care primește un număr natural, v, prin care furnizează un tablou unidimensional cu 2*n elemente, valori naturale distincte din intervalul [1,2*n].

Subprogramul construieşte tabloul v astfel încât, în acesta, şirul elementelor impare să fie strict crescător, iar şirul elementelor pare să fie strict descrescător. Primul element al tabloului este impar, iar două elemente cu aceeaşi paritate nu pot ocupa poziţii consecutive în tablou.

Variante Bacalaureat 2013

#802 SumImpK C++

Scrieţi definiția completă a subprogramului C++ sub care are 3 parametri: n – prin care primește un număr natural, v, prin care primeşte un tablou unidimensional cu n elemente, numere naturale cu cel mult 4 cifre și k, prin care primeşte un număr natural.

Subprogramul returnează suma primelor k elemente cu valoare impară ale tabloului. Dacă nu există k elemente impare în tablou, subprogramul returnează valoarea -1.

Variante Bacalaureat 2013

Să se scrie un program care citeşte un şir de caractere format din cuvinte separate prin unul sau mai multe spații şi elimină din șir toate spațiile inutile.

Să se scrie un program care citește un șir de caractere în care cuvintele sunt formate numai din litere mici ale alfabetului englez și sunt separate prin câte un spațiu și elimină litera din mijloc a fiecărui cuvânt cu număr impar de litere (cel puțin trei).

Un interval cu proprietatea că există un singur număr natural, n (2≤n), pentru care valoarea produsului 1·2·3·...·n aparține acestui interval este numit interval factorial al lui n.

Să se scrie o funcție C++ care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametrii de ieșire un interval factorial al lui n de lungime maximă.

Variante Bacalaureat 2014

Pentru un şir de caractere S, vom nota cu lmax[S] lungimea maximă a unei secvenţe palindromice conţinută în şirul S. Astfel, pentru şirul S=”abAabaabC”, lmax[S]=4, iar pentru şirul S=”a”, lmax[S]=1.

Prin secvenţa palindromică a unui şir S înţelegem un subşir de caractere aflate pe poziţii consecutive, ce formează un palindrom.

Date fiind N şiruri de caractere S[1], S[2],…, S[n] şi o valoare naturală L, se cere să se determine numărul de secvenţe de şiruri de caractere de forma: S[i], S[i+1], … , S[j], cu i<=j, pentru care lmax[S[i]]+lmax[S[i+1]]+... +lmax[S[j]]=L.

Lot Juniori, Botosani, 2012

#745 K1

Pentru a diminua efectele crizei economice prin creşterea numărului de telespectatori (şi implicit a veniturilor provenite din publicitate), redacţia „Şocuri şi concursuri” a unei televiziuni selecte a decis să organizeze un turneu de lupte k1. La acesta vor lua parte N sportivi. Fiecare dintre aceştia are un rating, calculat pe baza rezultatelor sale anterioare. Suma de bani pe care o primeşte pentru fiecare luptă la care va lua parte este egală cu acest rating. În urma fiecărei lupte rating-ul învingătorului creşte cu valoarea rating-ului învinsului.

Cum televiziunea îşi doreşte un profit cât mai mare, conducătorii acesteia doresc să programeze meciurile astfel încât să plătească luptătorilor o sumă totală cât mai mică. Ştiind că nu există lupte încheiate la egalitate şi că turneul se termină doar după ce a fost stabilit un învingător, stabiliţi care este suma totală minimă pe care o pot plăti organizatorii. Suma totală plătită de televiziune este obţinută prin adunarea sumelor plătite tuturor luptătorilor pe parcursul turneului.

Lot Juniori, Cluj Napoca, 2009

#727 Joc1

Atunci când este plictisit, Costel inventează jocuri logice şi încearcă să le rezolve. Într-o zi Costel ia o tablă dreptunghiulară împărţită în M*N pătrăţele identice, asemănătoare unei table de şah, şi aşează pe aceasta cuburi identice astfel încât, pe fiecare pătrat al tablei să se afle cel puţin un cub şi cel mult 10 cuburi suprapuse. Costel determină numărul minim de cuburi aşezate pe o poziţie a tablei, notat cu MIN.

El defineşte noţiunea de mutare astfel: alege patru pătrăţele învecinate, care formează un pătrat compus din 2*2 pătrăţele şi ridică toate cuburile de pe aceste poziţii astfel ca, pe fiecare dintre cele patru pătrăţele, să existe un număr de cuburi egal cu MIN. Efortul necesar efectuării mutării este egal cu MAX-MIN, unde MAX reprezintă numărul maxim de cuburi aflat pe unul dintre cele patru pătrăţele alese.

Scopul jocului este acela de a obţine acelaşi număr de cuburi, egal cu valoarea MIN, pe fiecare pătrăţel de pe tablă, efectuând un şir de mutări ce necesită un efort total minim. Efortul total depus pentru rezolvarea jocului este egal suma eforturilor mutărilor efectuate.

Determinaţi valoarea efortului total minim depus pentru rezolvarea jocului.

Lot Juniori, Arad, 2011

#722 Cifru

Alibaba trebuie să descopere cifrul care deschide cufărul cu comoara cea mare. Cifrul este foarte greu de găsit. El a descoperit mai multe pietre, fiecare piatră având o altă culoare, pe fiecare piatră fiind scris un număr natural cu cel mult 4 cifre. Alibaba observă că numerele de pe fiecare piatră sunt distincte două câte două. Regula după care se formează cifrul este una foarte simplă, şi Alibaba a reuşit să o obţină destul de uşor: cifrul este format din alăturarea într-o anumită ordine a tuturor pietrelor. Ceea ce Alibaba mai ştie este că pe poziţia p din cifru se găseşte cu siguranţă cifra k.

Scrieţi un program care determină numărul de variante de cifruri pe care va trebui să le încerce Alibaba. Numărul fiind foarte mare se va calcula modulo 46337.

Lot Juniori, Focsani, 2010

#721 CD

Ionică a strâns foarte multe CD-uri cu jocuri, muzică, filme, etc. pe care le are aşezate în n cutii, codificate prin 1, 2, …, n. Pe la Ionică vine în vizită vărul lui, Florin, care tocmai câştigase un concurs de matematică. Ca să-i mai taie din elan, Ionică îi propune lui Florin să pună o parte din CD-uri într-o ladă mai mare, astfel încât să se ia din fiecare cutie cel puţin câte un CD şi la sfârşit să rămână în fiecare cutie cel puţin un CD.

Pentru a complica problema, Ionică nu îi spune lui Florin câte CD-uri sunt în fiecare cutie, ci îi spune că are în total S CD-uri şi că, dacă ia din fiecare cutie un număr de CD-uri şi le pune în altă cutie va obţine în final acelaşi număr de CD-uri în toate cutiile.

Să se scrie un program care cunoscând n, S şi numărul de CD-uri mutate din fiecare cutie, determină numărul k de modalităţi distincte de introducere a CD-urilor în ladă, respectând regula din enunţ.

Lot Juniori, Focsani, 2010

Miriapodul Verone trăieşte cel mult 12 luni, dar nu este nefericit, întrucât viaţa i se pare lungă şi frumoasă. I se spune Verone deoarece corpul său cilindric este alcătuit din segmente colorate, iar fiecare segment poate avea doar una dintre culorile: verde, roşu sau negru.

În prima lună de viaţă, corpul miriapodului este format dintr-un singur segment. În fiecare dintre lunile următoare, fiecare segment s creşte în lungime şi se divide în trei segmente: s1, s2 şi s3. Segmentele s1 şi s3 păstrează culoarea segmentului s, în vreme ce segmentul s2, cel din mijloc, se colorează astfel: dacă s era verde, atunci s2 devine roşu. Dacă s era roşu, atunci s2 devine negru. Dacă s era negru, atunci s2 devine verde.

Cineva a găsit un fragment dintr-un asemenea miriapod, rezultat în urma unei lupte fatale pentru miriapod, cu o altă vieţuitoare.

Cunoscând culoarea unicului segment în prima lună de viaţă a miriapodului şi succesiunea de culori a fragmentului găsit, scrieţi un program care determină vârsta acestuia şi succesiunea de culori a tuturor segmentelor sale înainte de începerea luptei.

Lot Juniori, Botosani, 2012

Gigel se lupta cu ardoare, în jocul primit în vacanţa de Paşti, cu fel şi fel de balauri. Într-una din zile a întâlnit un balaur care nu putea fi răpus cu nici una din armele obişnuite. Lur Ualab, căci aşa îl chema pe balaur, putea fi învins numai dacă cineva reuşea să îi rezolve ghicitoarea.

În fiecare luptă Lur Ualab îi dă lui Gigel un şir foarte lung format doar din litere mici ale alfabetului englez. Gigel trebuie să şteargă toate apariţiile, mai puţin una a fiecărei litere, astfel încât în şirul final obţinut să rămână toate literele distincte din şirul dat. La final, Gigel trebuie să îi dea lui Lur Ualab cel mai mic şir, din punct de vedere lexicografic, ce se poate obţine din şirul primit de el.

Scrieţi un program care să determine cel mai mic şir, din punct de vedere lexicografic, ce se poate obţine dintr-un şir dat, aplicând toate operaţiile de ştergere necesare.

Lot Juniori, Botosani, 2012

#688 pixy

Pixy locuieşte într-o ţară colorată. Harta ţării poate fi reprezentată sub forma unui dreptunghi împărţit în celule, organizate în M linii şi N coloane. Liniile sunt numerotate de la 1 la M, începând de la linia de sus, iar coloanele sunt numerotate de la 1 la N începând de la coloana din stânga. Fiecare celulă are o anumită culoare. Culorile sunt codificate cu literele A, B, C, D, E, F (există doar 6 culori).

Casa lui Pixy se găseşte în celula de coordinate (1,1), iar prietena lui, Pixela, locuieşte în celula de coordonate (M,N). Pixy doreşte să ajungă la aleasa inimii sale, însă nu poate păşi decât pe celule de aceeaşi culoare. Ştim că Pixy se poate deplasa doar orizontal, sau vertical cu câte o căsuţă la fiecare pas.

Pentru a putea ajunge la Pixela, Pixy va proceda astfel: alege o culoare şi va recolora celula în care se găseşte casa sa cu culoarea aleasă. Astfel va obţine o zonă de celule adiacente având toate aceeaşi culoare. Două celule se consideră adiacente dacă se învecinează orizontal sau vertical. De exemplu, pentru harta din figura 1, dacă alege culoarea având codul D va obţine zona marcată din figura 2, toate celulele din această zonă având culoarea D.

În continuare Pixy va proceda asemănător: alege o nouă culoare, şi recolorează toată zona obţinută la pasul anterior cu noua culoare, astfel zona pe care poate păşi se lărgeşte. De exemplu, dacă în situaţia din figura 2, Pixy alege acum culoarea cu codul C va obţine situaţia din figura 3.

Procedeul continuă până când celula corespunzătoare casei Pixelei face şi ea parte din zona obţinută de Pixy în urma recolorărilor.

Alegerea culorilor de la fiecare pas trebuie făcută cu mare grijă, astfel încât numărul de recolorări să fie minim.

Acum lui Pixy îi mai rămâne sarcina de a găsi un drum cât mai scurt pe care îl va parcurge până la Pixela, păşind doar pe celulele din zona obţinută în urma recolorărilor succesive, adică celulele de pe parcursul drumului vor avea toate aceeaşi culoare.

Se cere să determinaţi:

a) numărul minim de recolorări
b) lungimea drumului minim de la Pixy la Pixela, parcurs pe zona obţinută în urma recolorărilor de la cerinţa a).

Lot Juniori, Sibiu 2011

#687 liste

Numim listă un sir de numere naturale. Avem la dispoziţie mai multe liste aşezate, în ordine, una sub alta. Spunem că două liste L1 şi L2 sunt vecine dacă L1 este imediat deasupra lui L2, sau dacă L2 este imediat deasupra lui L1. Oricare două liste vecine L1 şi L2 pot fi unificate dacă ele au cel puţin un element comun. Prin unificare, noua listă va avea ca elemente toate elementele din L1 la care se adaugă toate elementele din L2. Listele L1 şi L2 vor dispărea şi în locul lor va apărea noua listă.

Determinaţi numărul minim de liste care rezultă după aplicarea unui număr suficient de unificări astfel încât să nu mai existe două liste vecine care să poată fi unificate.

Lot Juniori, Sibiu 2011

#686 grad

Se consideră o propoziţie formată din litere mici ale alfabetului englez şi eventual spaţii. Cuvintele sunt formate numai din litere şi sunt separate între ele prin unul sau mai multe spaţii.

Definim numărul asociat unui cuvânt c1c2...ck ca fiind un număr natural nc, obţinut ca produsul puterilor de forma pi, unde p este poziţia în alfabet a literei ci. Astfel cuvântului badab i se asociază numărul nc=21∙12∙43∙14∙25, adică nc=4096.

Definim gradul unui cuvânt c1c2...ck ca fiind numărul nr modulo k, unde nr este numărul de divizori al lui nc. Gradul cuvântului badab este 3, pentru că nr=13 (cei 13 divizori ai lui 4096 sunt: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 şi 4096), k=5 (cuvântul conţine 5 litere) şi 13 modulo 5=3.

Definim gradul unei propoziţii ca fiind suma gradelor cuvintelor existente în ea.

Să se scrie un program care pentru o propoziţie dată determină gradul ei.

Lot Juniori, Sibiu 2011

Se dă un şir format din cel mult 100 de caractere – litere mici ale alfabetului englez şi spaţii. Să se modifice acest şir prin dublarea fiecărei vocale.

Simulare bacalaureat 2014

Scrieţi un program care citeşte de la tastatură un şir de cel mult 50 de caractere (cifre, litere ale alfabetului englez şi spaţii; şirul conţine cel puţin o literă), apoi construieşte în memorie şi afişează pe ecran şirul de caractere obţinut din şirul citit prin eliminarea tuturor caracterelor care nu sunt litere.

Variante Bacalaureat 2009

Se dau două şiruri de caractere s şi t. Să se elimine din s doar ultima apariţie a lui t.

Să se scrie un program care citește un șir de caractere și afișează litera mică cel mai des întâlnită în șir.

Variante Bacalaureat 2009

Să se scrie un program care citește un șir de caractere și afișează o singură dată literele mici din șir în ordinea în care apar în șir.

Variante Bacalaureat 2009

Să se scrie un program care determină cel mai bun șablon comun a două șiruri de caractere.

Să se scrie un program care citeşte de la tastatură un numele și prenumele unei persoane și construiește un al treilea șir de caractere, care va conține consoanele din prenumele citit dispuse în ordinea în care apar în prenume, urmate de exact un spațiu și de numele citit.

Variante Bacalaureat 2009

Să se scrie un program care citește un text și inserează după fiecare vocală caracterul *.

Să se scrie un program care citeşte de la tastatură un şir de caractere format din cuvinte, numere spații şi elimină din şir numerele care au parte fracționară.

Să se scrie un program care citeşte de la tastatură un cuvănt şi afişează pe ecran toate cuvintele care se pot obţine prin eliminarea unei singure litere din cuvântul citit.

Variante Bacalaureat 2009

Să se scrie un program care citeşte de la tastatură un şir de caractere şi elimină din şir toate perechile de vocale consecutive.

Variante Bacalaureat 2009

Să se scrie un program care citeşte de la tastatură o propoziţie formată din mai multe cuvinte separate prin spaţii şi determină numărul de perechi de vocale consecutive din propoziție.

Să se scrie un program care citeşte de la tastatură o propoziţie formată din mai multe cuvinte separate prin spaţii şi transformă prima şi ultima literă a fiecărui cuvânt în literă mare.

Se dă un text în care cuvintele sunt formate din litere mici ale alfabetului englez şi cifre şi sunt separate prin spaţii şi semne de punctuaţie. Să se determine perechea de vocale alăturate din text care apare de cele mai multe ori.

Variante Bacalaureat 2009

#37 ZeroFact C++

Scrieți definiția completă a unui subprogram C++, nz, cu un parametru întreg n, care returnează numărul zerourilor de la sfârşitul numărului n!

Variante Bacalaureat 2009

Se dau două cuvinte şi o propoziţie. Să se înlocuiască în propoziţie fiecare apariţie a primului cuvânt cu al doilea.

Se dă un șir de cuvinte. Să se determine numărul cuvintelor care conțin doar vocale.

Să se scrie un program care citeşte un şir de caractere format din litere mici ale alfabetului englez şi înlocuieşte fiecare vocală cu litera mare corespunzătoare.

Să se scrie un program care citeşte un şir de caractere format din litere mici ale alfabetului englez şi elimină din șir toate vocalele.

Scrieţi un program care citeşte de la tastatură un şir de cel mult 50 de caractere (litere mici şi mari ale alfabetului englez, cifre, puncte, virgule şi spaţii) şi afişează pe ecran cifra care apare de cele mai multe ori în şirul citit.

Variante Bacalaureat 2009

Să se scrie un program care citește o propoziţie şi afişează cuvintele din propoziţie ordonate alfabetic.

#75 FSumDiv3 C++

Scrieți definiția completă unui subprogram C++ care returnează suma elementelor divizibile cu 3 ale unui tablou unidimensional transmis ca parametru.

Variante Bacalaureat 2009

Să se scrie un program care citește mai multe propoziții și determină propoziția cu cele mai multe cuvinte.

Să se scrie un program care citește un cuvânt și îl afișează după interschimbarea primei vocale cu ultima consoană.

Să se scrie o funcție C++ care verifică dacă un număr natural transmis ca parametru este aproape prim.

Să se scrie definiția completă a funcției C++ P care primește prin intermediul parametrului n un număr natural cu cel mult 9 cifre, iar prin intermediul parametrului c o cifră. Funcția întoarce tot prin intermediul parametrului n numărul obținut prin eliminarea tuturor aparițiilor cifrei c.

Variante Bacalaureat 2009

Să se scrie un program care citește mai multe propoziții și determină propoziția de lungime maximă.

Scrieți definiția completă a subprogramului 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ă.

Variante Bacalaureat 2009

#38 Shift C++

Scrieţi definiția completă a subprogramului shift care primește prin intermediul parametrului n o valoare naturală nenulă (n≤100), iar prin intermediul parametrului x, un tablou unidimensional cu n componente. Fiecare componentă a acestui tablou este un număr întreg care are cel mult 8 cifre.

Subprogramul permută circular cu o poziţie spre stânga primele n elemente ale tabloului x și furnizează tabloul modificat tot prin parametrul x.

Variante Bacalaureat 2009

Să se scrie o funcție C++ care să determine numărul divizorilor impari ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.

#113 FCifre C++

Să se scrie o funcție C++ care primeşte doi parametri, n şi k şi returnează numărul de cifre ale lui n care divid pe k.

#24 Oglindit2 C++

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

Scrieți definiția completă a subprogramului numar, care primește prin intermediul parametrului n un număr natural nenul (1≤n≤100), iar prin intermediul parametrului a, un tablou unidimensional care conţine n valori naturale

Subprogramul furnizează prin parametrul k o valoare naturală egală cu numărul obţinut prin concatenarea valorii maxime cu valoarea minimă din tablou.

Variante Bacalaureat 2009

Să se scrie un program care verifică dacă două cuvinte date sunt anagrame.

Să se scrie un program care citește o propoziție și determină cuvântul palindrom de lungime maximă.

Să se verifice dacă o propoziție dată este palindromică.

Să se scrie o funcție C++ care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.

Să se scrie o funcție C++ care să determine suma divizorilor unui număr natural transmis ca parametru. Funcția va returna rezultatul.

Să se scrie o funcție C++ care verifică dacă un număr natural transmis ca parametru este prim.

Scrieți definiția completă subprogramului C++ afismat care afișează pe ecran elementele unui tablou bidimensional.

Scrieți definiția completă subprogramului C++ citmat care citește de la tastatură dimensiunile și elementele unui tablou bidimensional.

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

#35 Count C++

Scrieţi definiția completă a subprogramului C++ count care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 100 de numere reale mai mici decât 1000 și n, numărul efectiv de elemente ale tabloului.

Subprogramul returnează numărul de elemente din tablou care sunt mai mari sau cel puțin egale cu media aritmetică a tuturor elementelor din tablou.

Variante Bacalaureat 2009

Scrieţi definiția completă a unui subprogram C++ nr_prim care primește prin singurul său parametru, n, un număr natural cu cel mult 9 cifre și returnează cel mai mic număr prim, strict mai mare decât n.

Variante Bacalaureat 2009

#73 FSumVecMin C++

Scrieți definiția completă unui subprogram C++ care returnează suma celor mai mici m elemente ale unui tablou unidimensional dat.

Variante Bacalaureat 2009

#70 FMultiplu C++

Scrieți definiția completă a subprogramului multipli, cu trei parametri a , b , c (a≤b), numere naturale, ce returnează numărul multiplilor lui c din intervalul [a;b].

#43 NReal C++

Scrieţi definiția completă a subprogramului C++ nreal cu doi parametri x și y, numere naturale din intervalul [1;1000] ce returnează un număr real cu proprietatea că partea sa întreagă este egală cu x, iar numărul format din zecimalele sale, în aceeaşi ordine, este egal cu y.

Scrieți definiția completă a subprogramului P care primeşte prin intermediul parametrului n un număr natural nenul (n≤100), iar prin intermediul parametrului x un tablou unidimensional cu n componente întregi, de maximum opt cifre fiecare.

Subprogramul furnizează prin intermediul parametrului mini valoarea minimă din tabloul x, prin intermediul parametrului maxi valoarea maximă din x, iar prin intermediul parametrului sum suma elementelor din tabloul x.

Variante Bacalaureat 2009

#1827 VectorSumPrim C++

Scrieți definiția completă a subprogramului P care primeşte prin intermediul parametrului n un număr natural nenul (n≤100), iar prin intermediul parametrului x un tablou unidimensional cu n componente întregi, de maximum șase cifre fiecare.

Subprogramul furnizează prin intermediul parametrului s suma elementelor din tabloul x care au valori numere prime.

#36 i_prim C++

Scrieţi definiția completă a unui subprogram C++ i_prim care primește prin singurul său parametru, n, un număr natural cu cel mult 9 cifre și returnează diferența minimă p2-p1 în care p1 şi p2 sunt numere prime și p1≤n≤p2.

Variante Bacalaureat 2009

#34 Interval C++

Scrieţi definiția completă a subprogramului C++ interval care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000 și n, numărul efectiv de elemente ale tabloului.

Subprogramul returnează numărul de elemente din tablou care aparțin intervalului închis determinat de primul și ultimul element al tabloului.

Variante Bacalaureat 2009

#33 Multiplu C++

Scrieţi definiția completă a subprogramului C++ multiplu care are 3 parametri: a, prin care primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000, n, numărul efectiv de elemente ale tabloului şi k, un număr natural.

Subprogramul returnează numărul de elemente din tablou care sunt multipli ai numărului k şi au ultima cifră egală cu k.

Variante Bacalaureat 2009

Scrieți definiția completă a funcției C++ sub care primește doi parametri n și k și determină afișarea pe ecran, în ordine descrescătoare, a primelor n numere naturale nenule divizibile cu k.

Variante Bacalaureat 2009

#27 Cifre Zero C++

Să se scrie o funcție C++ care să returneze numărul de cifre egale cu zero ale unui număr natural transmis ca parametru.

Să se scrie o funcție C++ care să returneze cel mai mic număr care se poate scrie cu cifrele unui număr natural transmis ca parametru.

Să se scrie o funcție C++ care să returneze cel mai mare număr care se poate scrie cu cifrele unui număr natural transmis ca parametru.

Să se scrie o funcție C++ care să determine suma cifrelor unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.

#23 Oglindit1 C++

Să se scrie o funcție C++ care să determine oglinditul unui număr natural transmis ca parametru. Funcția va întoarce rezultatul prin intermediul unui parametru de ieşire.

Să se scrie o funcție C++ care să determine suma divizorilor unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.

Să se scrie un program care să afişeze prefixele şi sufixele unui cuvânt citit.