#2977
poarta1
Sindbad a descoperit un recipient care conține o poțiune magică și o inscripție care descrie cum se poate deschide poarta unui templu. Urmând instrucțiunile din inscripție, Sindbad a ajuns la un tunel acoperit cu dale pătrate, aliniate astfel încât formează linii și coloane. Tunelul are mai multe linii, iar pe fiecare linie sunt câte N
dale. Dalele din tunel sunt numerotate începând cu 1
, astfel încât, parcurgându-le linie cu linie și fiecare linie de la stânga la dreapta, se obține un șir strict crescător de numere naturale consecutive.
Sindbad se află la intrare, înaintea primei linii. Pentru a deschide poarta templului, el trebuie să ajungă pe dala numerotată cu P
, călcând pe un număr minim de dale. Dacă există mai multe astfel de soluții, o va alege pe cea pentru care consumul total de picături de poțiune magică este minim.
Scrieți un program care citește valorile N
și P
și rezolvă următoarele cerințe:
1. afișează numărul minim de dale pe care trebuie să calce pentru a deschide poarta;
2. afișează numărul natural T
, reprezentând numărul minim de picături de poțiune magică necesare pentru deschiderea porții.
OJI 2019
Problema | poarta1 | Operații I/O |
poarta.in /poarta.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 8 MB
/
Stivă 4 MB
|
Id soluție | #47477517 | Utilizator | |
Fișier | poarta1.cpp | Dimensiune | 4.46 KB |
Data încărcării | 14 Decembrie 2023, 09:02 | Scor / rezultat | Eroare de compilare |
poarta1.cpp: In function 'int main()': poarta1.cpp:32:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(nrcif-q<strlen(N)) dalmin++, q=10000, Pcif[nrcif-1]=-1, ok=1; //daca numarul de cifre a lui P este mai mic decat al lui N, atunci ^ poarta1.cpp:35:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(nrcif-q==strlen(N)){ //daca numaruul de cifre a lui P este egal cu cel al lui N ^ poarta1.cpp:38:44: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while(i<nrcif && j<strlen(N) && linia1==1){ //in realitate, i si j sunt contoare egale ^ poarta1.cpp:40:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(i==nrcif-1 && j==strlen(N)-1){ ^ poarta1.cpp:44:25: error: expected '}' before 'else' else linia1=0; //daca cifra nr i a lui P este mai mare decat cea nr j a lui N, atunci P nu se afla pe linia 1 ^ poarta1.cpp:54:11: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses] if(!ok) //daca P nu se afla pe linia1 ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema poarta1 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.