Î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: PremiiLa 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:
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: PanouSe 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: SumeSe 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: DominouriSe 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.
Date de ieșire Datele de ieșire se vor scrie în fișierul DOMINO.OUT, astfel:
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: FactorialDin 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] |