Încercați-vă puterile!

PROBLEME propuse pentru REZOLVARE

  În toiul olimpiadelor de informatică este firesc să vă oferim câteva din problemele etapei județene. În rest, vă dorim succes la Olimpiada Națională!

P049901: Premii

  La un concurs doi concurenți au obținut cel mai bun rezultat. Premiul oferit de sponsori este format din mai multe obiecte, având valori nu neapărat distincte.

Scrieți un program care împarte obiectele între cei doi concurenți, astfel încât diferența dintre valorile totale ale obiectelor primite de fiecare să fie minimă.

Date de intrare

Datele de intrare se vor citi din fișierul text PREMII.IN:

  • - pe prima linie a fișierului se află un număr întreg n (1<nŁ100) reprezentând numărul de obiecte;
  • - pe a doua linie sunt scrise valorile celor n obiecte; acestea sunt numere întregi, strict pozitive, mai mici decât 100, separate printr-un singur spațiu.

Date de ieșire

Fie S1 și S2 sumele valorilor obiectelor primite de cei doi concurenți. În fișierul PREMII.OUT se vor scrie numerele S1 și S2, în orice ordine, separate printr-un singur spațiu.

Exemplu

 PREMII.IN PREMII.OUT  
5 85 90  
 10 80 30 50 5  

P049902: Numere "superprime"

  Numim numere superprime acele numere naturale prime ale căror prefixe sunt de asemenea prime. De exemplu, numărul 239 este superprim, deoarece numerele 2, 23 și 239 toate sunt prime. Numărul 241 nu este superprim, deoarece 24 nu este prim.

Scrieți un program care generează toate numerele superprime formate din n cifre.

Date de intrare

Din fișierul text PRIME.IN se va citi numărul cifrelor numerelor prime care trebuie generate (1<nŁ9).

Date de ieșire

În fișierul PRIME.OUT se vor scrie numerele prime generate, precedate de prefixele lor prime. Pe fiecare linie a fișierului se va scrie un număr format din n cifre, precedat de prefixele lui. Două numere se vor despărți printr-un singur spațiu. Fișierul va avea atâtea linii câte numere superprime a găsit algoritmul. În cazul în care nu există nici un număr superprim, în fișierul de ieșire se va scrie: Nu

Exemplu

Datele de ieșire sunt scrise pe două coloane din motive de spațiu.

 PRIME.IN PRIME.OUT  
 3 2 23 233 3 37 379  
 2 23 239 5 59 593  
 2 29 293 5 59 599  
 3 31 311 7 71 719  
 3 31 313 7 73 733  
 3 31 317 7 73 739  
 3 37 373 7 79 797  

P049903: Panou

  Se consideră un panou electric pe care sunt dispuse n*m becuri, conform unui caroiaj. Aceste becuri pot fi aprinse sau stinse. Schimbarea stărilor se poate realiza de la un pupitru de comandă care are la dispoziție un mecanism de dimensiune p*q, care așezat deasupra panoului îl acoperă pe acesta parțial și schimbă starea becurilor pe care le acoperă.

Scrieți un program care stabilește dacă se pot aprinde, sau nu, toate becurile de pe panou, folosind acest dispozitiv.

Date de intrare

Datele de intrare se vor citi din fișierul text PANOU.IN:

- pe prima linie a fișierului se află numerele naturale n și m (1<n,mŁ100) reprezentând numărul de linii, respectiv numărul de coloane ale panoului electric;

- a doua linie conține numerele naturale p și q, reprezentând numărul de linii, respectiv de coloane ale dispozitivului (1Łp,qŁ100, pŁn,qŁm);

- pe fiecare din următoarele n linii sunt scrise stările celor m becuri de pe acea linie; fiecărui bec aprins îi corespunde un caracter +, iar celor stinse câte un caracter - (caracterele + și - nu sunt separate prin nici un spațiu).

Date de ieșire

Dacă toate becurile se pot stinge, pe prima linie a fișierului PANOU.OUT se va scrie cuvântul DA, altfel se va scrie NU. În caz afirmativ, pe următoarele linii se vor descrie pozițiile dispozitivului care vor avea ca efect stingerea tuturor becurilor. O poziție se precizează prin indicele de linie și cel de coloană din matricea corespunzătoare panoului electric, unde se poziționează colțul stânga sus al dispozitivului.

Exemplu

 PANOU.IN PANOU.OUT  
 5 6 DA  
 2 2 2 3  
 ++++++ 3 3  
 ++--++  
 ++++++  
 ++--++  
 ++++++ 

P049904: Sume

  Se dă un șir strict crescător de n numere naturale.

Să se decidă dacă orice număr natural xÎ{1,...,m} se poate scrie ca sumă de termeni distincți din șirul dat (1<nŁ100.000, mŁ2.000.000.000). Dacă descompunerea nu este posibilă, să se determine cel mai mic număr care nu poate fi scris ca sumă de termeni distincți din șirul dat.

Date de intrare

Datele de intrare se vor citi din fișierul text SUME.IN. Pe prima linie a fișierului sunt scrise numerele n și m separate printr-un singur spațiu. Pe următoarele n linii sunt scrise elementele șirului strict crescător.

Date de ieșire

Pe prima linie a fișierului SUME.OUT se va scrie DA, în cazul în care descompunerea este posibilă; în caz contrar, se va scrie NU, iar pe următoarea linie va fi tipărit cel mai mic număr care nu poate fi scris ca sumă de termeni distincți din șirul dat.

Exemple

 SUME.IN SUME.OUT SUME.IN SUME.OUT  
 4 11 DA 4 11 NU  
 1 1 8  
 2 2  
 4 4  
 5 10  

P049905: Dominouri

  Se dau n piese de domino (o piesă de domino este o plăcuță dreptunghiulară pe care sunt înscrise două cifre din mulțimea {0,1,...,6}). Cu aceste piese se pot forma lanțuri (formațiuni liniare) în care oricare două dominouri consecutive sunt alipite pe zona unde cifrele lor sunt identice.

Scrieți un program care din cele n dominouri date formează două lanțuri astfel încât diferența dintre suma tuturor punctelor înscrise pe dominourile din prima formație și suma tuturor punctelor înscrise pe dominourile din cea de a doua formație să fie minimă; dominourile pot fi rotite. În plus, cele două lanțuri formate trebuie să fie subșiruri ale șirului inițial de dominouri.

Date de intrare

Datele de intrare se vor citi din fișierul text DOMINO.IN.

Pe prima linie a fișierului se află numărul dominourilor (1<nŁ20) din care se vor forma cele două lanțuri.

Pe următoarele n linii se află valorile scrise pe cele n dominouri; acestea sunt perechi de numere naturale aparținând mulțimii {0,...,6}. Între cele două numere există un singur spațiu.

Restricții:

1. Trebuie utilizate toate piesele de domino; datele de intrare permit formarea a două lanțuri.

2. Cele două lanțuri formate trebuie să fie subșiruri ale șirului inițial de dominouri (nici un domino nu va depăși în propria formație un alt domino care în șirul din fișierul de intrare a fost precizat undeva, în urma acestuia).

Date de ieșire

Datele de ieșire se vor scrie în fișierul DOMINO.OUT, astfel:

  • - pe prima linie numărul dominourilor din primul lanț;
  • - pe următoarele linii dominourile din primul lanț;
  • - pe următoarea linie numărul dominourilor din al doilea;
  • - pe următoarele linii dominourile din al doilea lanț.

Exemplu

 DOMINO.IN DOMINO.OUT 
 5 3 
 1 0 0 1 
 1 5 1 5 
 2 3 5 1 
 2 5 2 
 5 1 3 2 
 2 5 

P049906: Factorial

  Din fișierul FACT.IN se citește un număr natural N (1.000ŁNŁ101.000) despre care se știe că reprezintă o valoare k! (k factorial). Scrieți un program care determină și afișează în fișierul FACT.OUT numărul k.

Exemple

 FACT.IN FACT.OUT 
 40320 8 


              
 FACT.IN  
 FACT.OUT   
 1307674368000 15

[cuprins]