Inspectoratul Şcolar Judeţean Prahova Olimpiada Locală de Informatică – subiecte 25 ianuarie 2014
Clasa a IX-a
Problema 1 – Rochiţe colorate 100 puncte
Un croitor doreşte să facă nişte rochii mai deosebite. El are la dispoziţie n tipuri de material,
codificate prin numere de la 1 la n şi aranjate în aşa fel încât să rezulte o combinaţie coloristică
frumoasă dacă sunt luate în ordinea stabilită. Pentru confecţionarea fiecărei rochii foloseşte doar k
tipuri de material, unde k≤n, un metru din fiecare tip. El ar dori să înceapă confecţionarea rochiilor
de la primul material şi să continue cu acest model până unul din cele k materiale (sau toate) se
epuizează. Croitorul ar dori totuşi să ştie dacă reuşeşte să termine toate tipurile de material după
confecţionarea rochiilor. Ajutaţi-l voi să calculeze acest lucru.
Date de intrare
Datele de intrare se citesc din fişierul de intrare ROCHII.IN, în care pe prima linie se află
scris numărul natural n, pe a doua linie este scris numărul natural k, iar pe a treia linie sunt cele n
dimensiuni ale celor n tipuri de material.
Date de ieşire
Datele de ieşire vor fi scrise în fişierul ROCHII.OUT. Dacă problema nu admite soluţie, în
fişierul de ieşire se va scrie mesajul ‘Imposibil’, altfel se va scrie o succesiune de numere ce
reprezintă codul materialului de la care începe selecţia.
Restricţii şi precizări
2 ≤ n ≤ 1000;
1 ≤ k ≤ n;
0 ≤ cantitatea materialului i ≤ 100.
Exemple
ROCHII.IN ROCHII.OUT
8 Imposibil
4
1 2 3 4 0 0 0 0
ROCHII.IN ROCHII.OUT
20 1 1 4 11 11 14
4
2 2 2 3 1 1 1 0 0 0 2 2 2 3 1 1 1 0 0 0
Profesori propunători Duţă Laura şi Popa Mirela
Colegiul Spiru Haret Ploieşti
Inspectoratul Şcolar Judeţean Prahova Olimpiada Locală de Informatică – subiecte 25 ianuarie 2014
Clasa a IX-a
Problema 2 – Numere 100 puncte
Se dă o bază de numeraţie b cuprinsă între 2 şi 36 şi un număr natural n, de maxim 500 de cifre în baza b. Să se calculeze numărul n, scris în baza 10.
Sunt disponibile două metode de reprezentare a cifrelor într-o bază oarecare: În codificarea directă, cifrele ’0’, ’1’, … , ’9’, au semnificaţia obişnuită. În codificarea literală, literele ’a’, ’b’, … , ’z’ sau ’A’, ’B’, … , ’Z’, completează cifrele
de la 10 la 35 astfel: Literele ’a’ sau ’A’ reprezintă cifra 10 într-o bază de numeraţie b mai mare sau
egală cu 11. Literele ’b’ sau ’B’ reprezintă cifra 11 într-o bază de numeraţie b mai mare sau
egală cu 12. Și aşa mai departe, până la literele ’z’ sau ’Z’ care reprezintă cifra 35 în baza
36.
Fișierul de intrare numere.in conține pe prima linie baza de numerație b și pe a doua
linie, numărul n scris în baza b, folosind cele două codificări posibile ale cifrelor. Fișierul de ieșire numere.out conține pe prima linie numărul n scris în baza 10.
Exemple:
numere.in numere.out
7
4326250
528010
2
101010
42
17
3fe4g
328388
Evaluare: 10 teste, a câte 10 puncte fiecare. Timp de execuţie: 50 milisecunde.
Profesor propunător Radu Aurelian,
Colegiul “Spiru Haret” Ploieşti
Inspectoratul Şcolar Judeţean Prahova Olimpiada Locală de Informatică – subiecte 25 ianuarie 2014
Clasa a X-a
Problema 1 Bila 100 puncte
Fie un teren dreptunghiular codificat printr-o matrice A cu N linii şi M coloane. Fiecare
element al matricii este un număr natural reprezentând altitudinea respectivei porţiuni de teren. Se
presupune că o bilă porneşte cu viteza Vo din punctul de coordonate (L, C) şi se poate deplasa într-o
porţiune învecinată de teren pe cele patru direcţii: sus, jos, stânga, dreapta. Dacă prin deplasare bila
coboară K unităţi de nivel atunci viteza sa creşte cu K unităţi de viteză. Dacă prin deplasare bila urcă
K unităţi de nivel atunci viteza sa scade cu 2*K unităţi de viteză. În plus, în toate cazurile, din cauza
frecării, viteza scade cu o unitate de viteză. Bila se poate deplasa într-o porţiune învecinată de teren
doar dacă viteza rămâne strict pozitivă.
Cerinţă: Determinaţi, dacă există, viteza maximă cu care bila poate ajunge într-o porţiune de
teren de pe marginea matricii.
Date de intrare: fişierul bila.in
- pe prima linie valorile N M L C Vo separate prin câte un spaţiu.
- pe fiecare din următoarele N linii câte M valori reprezentând înălţimile de pe linia corespunzătoare
din matrice, separate prin câte un spaţiu.
Date de ieşire: fişierul bila.out
- pe o singură linie valoarea MAX reprezentând viteza maximă sau valoarea -1 dacă bila nu poate
ajunge pe nici o cale la marginea matricii.
Restricţii şi precizări:
1≤N, M≤100 ; 1≤L≤N ; 1 ≤C≤M.
0≤A[I, J]≤1000 oricare (I, J).
1≤V≤2000.
Toate valorile sunt numere întregi.
Exemplu:
bila.in
4 4 3 3 2000
10 5 0 1000
25 300 500 1000
50 2 0 1000
1000 1000 1000 1000
bila.out
1944
Explicaţie: Drumul optim este: (3, 3)->(3, 2)->(3, 1)->(2,1)->(1,1)->(1, 2)->(1, 3)
Timp de execuţie: 1 secundă/test.
Profesor propunător Radu Vişinescu
Colegiul Naţional “I.L.Caragiale” Ploieşti
Inspectoratul Şcolar Judeţean Prahova Olimpiada Locală de Informatică – subiecte 25 ianuarie 2014
Clasa a X-a
Problema 2 Putere 100 puncte Doi seismologi au creat un algoritm foarte rapid pentru calculul puterii unui număr. Problema
era simplă: dându-se x şi n, n număr natural, să se calculeze valoarea xn (x la puterea n). Algoritmul
propus de ei este cel de mai jos:
Vector rest[NMAX]
Pasul 1: citeste x,n;
Pasul 2: pozitie = 0
Pasul 3: daca n este 0, atunci y=1
Pasul 4: altfel
Pasul 5: cat timp n>1 executa
Pasul 6: rest[pozitie] = n modulo 2
Pasul 7: n = n div 2
Pasul 8: pozitie = pozitie + 1
Pasul 9: y = x
Pasul 10: cat timp pozitie > 0 executa
Pasul 11: pozitie = pozitie – 1
Pasul 12: y = y*y
Pasul 13: daca rest[pozitie] este 1, atunci y=y*x
Pasul 14: scrie y
Unde:
rest[] este un vector de întregi de dimensiune NMAX care începe la poziţia 0
operatorul = este operatorul de atribuire (:= din Pascal)
operatorul modulo este restul împărţirii întregi (mod din Pascal sau % din C++)
operatorul div este câtul împărţirii întregi (div din Pascal sau / din C++)
ramura altfel de la pasul 4 execută paşii 5,9,10
repetiţia din pasul 5 execută paşii 6,7,8
repetiţia din pasul 10 execută paşii 11,12,13
Totuşi, la implementare, ei au întâmpinat doua greutăţi. Prima dintre ele, alocarea, este legată
de cât de mare trebuie să fie NMAX, astfel încât să se poată calcula xn, pentru un n dat. Şi a doua,
câte operaţii critice de înmulţire (operatorul *) efectuează algoritmul, tot pentru o putere n dată. Să îi
ajutăm să rezolve cele două probleme.
Date de intrare: În fişierul putere.in, se dă numărul natural n, n număr zecimal cu maxim
1000 de cifre.
Date de ieşire: În fişierul putere.out, apar, pe prima linie, numărul minim de elemente pentru
vectorul rest[] (valoarea pentru NMAX), necesar efectuării ridicării la puterea n şi numărul de
operaţii de înmulţire efectuate de algoritm pentru aceeaşi putere n, despărţite printr-un spaţiu.
Exemple:
putere.in putere.out
1544 10 12
96534125345643564524365534254 96 146
10 3 4
Evaluare: 10 teste, fiecare 10 puncte, câte 5 puncte pentru fiecare din cele două valori de ieşire
corecte.
Timp de execuţie: 50 milisecunde (0,05 s) / test Profesor propunător Radu Aurelian,
Colegiul “Spiru Haret” Ploieşti
Inspectoratul Şcolar Judeţean Prahova Olimpiada Locală de Informatică – subiecte 25 ianuarie 2014
CLASA a XI-a-a XII-a
Problema 1 Autostrăzi 100puncte
Conform planului de guvernare, ministrul marilor proiecte din Renania a cerut
consilierilor săi sa întocmească o harta cu toate autostrăzile pe care populația ar dori sa le construiască in următorii 10 ani. In urma studiului de fezabilitate au calculat si costurile
necesare construcției fiecărei autostrăzi propuse. Problema ministrului este ca nu are la
dispoziție decât o suma de bani S si, in plus, el dorește sa meargă numai pe autostrada atunci când va inspecta lucrările, așa ca nici o autostrada nu trebuie sa înceapă a fi construita decât daca se poate ajunge la ea mergând doar pe autostrăzi construite.
Având aceasta viziune, el a solicitat un plan de construcție al autostrăzilor care sa
îndeplinească următoarele cerințe: - Construirea autostrăzilor sa înceapă din capitala tarii, numerotata pe harta cu 1;
- Sa nu se depaseasca bugetul disponibil (S) - Prioritatea 0 a guvernului este ca numărul de orașe care vor fi conectate prin noua
rețea de autostrăzi sa fie cat mai mare, evident la un preț cat mai mic posibil. Ministrul, speriat de publicitatea negativa din presa, mai solicita drumarilor sa
continue construcția cu acele autostrăzi planificate care costa cel mai puțin dar numai daca toate orașele au putut fi conectate, crezând ca așa va reuși sa se laude
la sfârșit de mandat cu cel mai mare număr de autostrăzi finalizate si sa nu-i supere
pe acei cetățeni din orașele pana la care nu s-au putut construi autostrăzi; - O noua autostrada nu va fi începuta decât daca exista suficienți bani pentru
finalizarea ei. Date de intrare: Fișierul “auto.in” conține
-pe prima linie un număr n (n<=200) reprezentând numărul de orașe din Renania - pe a doua linie un număr S reprezentând suma de bani disponibila, exprimata in milioane de Ren, moneda naționala a Renaniei(S<=1000000000) - pe următoarele linii triplete de numere (x,y,z), numere naturale cu maxim 4 cifre reprezentând orașele si costul construirii unei autostrăzi intre ele
Date de ieșire: Fișierul “auto.out” conține Lista autostrăzilor construite sub forma tripletelor (x,y,z) din proiectul de dezvoltare
Pe ultima linie din fișier se vor afișa, separate prin spatii, 3 numere, reprezentând
Numărul de orașe in care se poate ajunge mergând numai pe autostrăzi
Numărul de autostrăzi construite
Suma de bani cheltuita pentru realizarea efectiva a proiectului Exemplu:
Auto.in
6 110 1 2 20 1 5 40 2 3 10 2 5 15 2 4 40 3 5 6 3 4 50 5 6 8
Auto.out
1 2 20 2 3 10 3 5 6 5 6 8 2 4 40 2 5 15 6 6 99
Auto1.in
6 80 1 2 20 1 5 40 2 3 10 2 5 15 2 4 40 3 5 6 3 4 50 5 6 8
Auto1.out
1 2 20 2 3 10 3 5 6 5 6 8 5 4 44
Profesor propunător Constantin Adriana Colegiul Naţional „Nichita Stănescu” Ploieşti
Inspectoratul Şcolar Judeţean Prahova Olimpiada Locală de Informatică – subiecte 25 ianuarie 2014
CLASA a XI-a-a XII-a
Problema 2 Surjecţie 100 puncte
Se dau numere naturale n şi m, .
Să se calculeze numărul funcţiilor surjective de la o mulţime cu n elemente la o
mulţime cu m elemente.
Se ştie că două funcţii şi sunt diferite între ele dacă există din mulţimea , astfel încât .
Date de intrare: În fişierul surjectie.in, se dau, pe prima linie, valorile n şi m,
separate printr-un spaţiu. Date de ieşire: În fişierul surjectie.out, apare, pe prima linie, numărul surjecţiilor de
la n la m. Exemple:
surjectie.in surjectie.out
7 2 126
5 3 150
6 6 720
Timp de execuţie: 50 milisecunde.
Teste: 10 teste a câte 10 puncte fiecare.
Profesor propunător Radu Aurelian,
Colegiul “Spiru Haret” Ploieşti
Top Related