Rezolvarea problemei Hidden Number de pe site pbinfo cu explicatii: Cerința Se citesc din fișier numere naturale. Determinați un număr x astfel încât dacă scădem din x pe rând fiecare număr citit atunci suma diferențelor să fie 0. Se va afișa numărul determinat sau -1, dacă un astfel de număr nu există. Date de intrare Fișierul de intrare `hidden_number.in` conține pe prima linie…
Read MoreDaca suntem putin atenti in momentul cand rezolvam probleme de pe pbinfo, vom vedea ca unele probleme sunt inrudite. M-am gandit sa abordez o astfel de suita de 3 probleme asemanatoare: Problema #327 AfisareNumere Cerinţa Se dă un număr natural n. Afișați în ordine crescătoare primele n numere naturale nenule. Date de intrare Programul citește de la tastatură…
Read MoreProblema „Zodiacul” poate fi enuntata extrem de simplu: Se citeste o data calendaristica corecta prin zi si luna si se cere sa se stabileasca in ce zodie se gaseste acea data calendaristica. Problema este o aplicatie foarte utila pentru introducerii structurii SELECTEAZA…SFARSIT_SELECTEAZA in partea de invatare a algoritmicii. Prezentarea noastra va folosi un program in…
Read MoreProblema #3188 Mate (pbinfo) Cerința Iarina a auzit la ora de matematica de numere triangulare. Un numar se numeste triangular daca se scrie ca suma primelor k numere naturale. Doamna profesoara le-a propus sa rezolve pentru acasa urmatoarea problema: Determinati toate numerele triangulare care sunt patrate perfecte. Iarina va roaga sa o ajutati sa rezolve…
Read MoreCe este „eficienta algoritmilor„? Iata o intrebare foarte des intalnita la care multa lume nu ii cunoaste nici macar raspunsul de baza. Ideea de la care se porneste este aceea ca pentru rezolvarea unei probleme se pot scrie mai multi algoritmi corecti. Dintre acestia, este eficient sa il alegem pe cel mai scurt. Care este…
Read MoreSe dă un poligon regulat cu n laturi cu l lungimea unei laturi. Aflați aria poligonului. Este o problema simpla in care trebuie aplicata doar formula clasica din geometrie care ne ajuta sa calculam aria unui poligon regulat cu n laturi. Problema apare in momentul tiparirii rezultatului pentru ca acesta trebuie, conform cerintelor problemei, tiparit cu 2 zecimale exacte.…
Read MoreO expresie este alcătuită din unul sau mai mulţi operanzi legaţi între ei prin operatori. Operanzii pot fi constante sau variabile. În timpul execuţiei, expresiile sunt evaluate, adică se calculează un anumit rezultat. Operanzii reprezintă valorile care intră în calcul. Ei pot fi: o variabilă sau o constantă. Operatorii desemnează operaţiile care se execută pentru…
Read MoreProblema FizzBuzz este o problema tipica pe care multi candidati la interviurile din industria IT au primit-o spre rezolvare. Este o problema simpla, dar in cele mai multe cazuri problemele simple sunt foarte dificile pentru unii candidati. Ea reprezinta un algoritm important care poate foarte bine testa abilitatile de dezvoltator ale candidatului la postul de…
Read MoreProblemele interesante de pe pbinfo sau de pe alte site nu sunt explicate aprope deloc. Nu exista idea explicarii pe intelesul tuturor a unor algoritmi interesanti, optimizati si eficienti. In activitatea de programator, munca de creare a unor algoritmi cat mai eficienti este din ce in ce mai ceruta si mai greu de realizat. In…
Read MoreNe punem problema cum se determina divizorii unui numar dat si cati divizori are un numar dat? Prima problema care iti cer sa o abordezi aici este de a stabili care sunt divizorii unui numar nr citit de la tastatura. De exemplu 24 are divizorii 1, 2, 3, 4, 6, 8, 12, 24. Ar trebui sa parcurgi tot intervalul de valori de la 1 la `nr` ca sa gasesti toate aceste numere. Daca observi insa ca aceste numere apar in pereche, deci daca parcurgi numai pana la jumatate intervalul si gasesti un divizor `d`, atunci sigur si `nr/d` va fi un divizor. Optimizeaza si mai mult si cauta numai pana la parte intreaga din radical din numar. Daca nu gasesti pana acolo un divizor, nu vei gasi nici mai departe. Algoritmul in pseudocod este: ALGORITM DIVIZORI ESTE: CITESTE nr; PENTRU (d=1; d*d<n;…
Read More