Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
1723 - Culegere 1
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == O culegere de probleme are '''P''' pagini, numerotate de la '''1 la P'''. Problemele din culegere sunt numerotate cu 1,2,3,...,etc, în ordinea apariţiei lor în culegere. Pe prima pagină a culegerii este scrisă o singură problemă (cea cu numărul 1). Pe a doua pagină sunt scrise exact două probleme (cele cu numerele 2 şi 3, în această ordine). Pe cea de-a treia pagină sunt scrise exact trei probleme (cele cu numerele 4, 5 şi 6, în această ordine),…, pe cea de a P-a pagină sunt scrise exact '''P''' probleme. Scrieţi un program care citeşte numerele naturale '''P şi N''' şi determină valorile: a) '''T''', numărul total de cifre care au fost utilizate în numerotarea tuturor problemelor din culegere; b) '''M''', numărul minim de pagini pe care ar trebui să le aibă culegerea, astfel încât aceasta să conţină şi problema numerotată cu '''N'''. == Date de intrare == Programul conţine pe prima linie cele două numere naturale '''P şi N''', separate printr-un spaţiu, cu semnificaţia din enunţ. == Date de ieșire == Programul conţine: pe prima linie numărul natural '''T''', cu semnificaţia din enunţ; pe a doua linie numărul natural '''M''', cu semnificaţia din enunţ. Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cerintele de mai sus. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: ''' "Datele nu corespund restricțiilor impuse.".''' == Restricţii şi precizări == 1 ≤ '''P''' ≤ 16000 1 ≤ '''N''' ≤ 2112600000 == Exemplul 1 == ; Datele de intrare : 5 9 ; Datele de ieșire : Datele sunt introduse corect. : 21 : 4 <br> == Rezolvare == <syntaxhighlight lang="python" line> #1723 import math def validate_input(p, n): if not 1 <= p <= 16000 or not 1 <= n <= 2112600000: return False return True def solve(p, n): # calculate the total number of problems in the first P pages total_problems = sum(range(1, p+1)) # calculate the number of pages needed to include problem N n_page = ((3 + 8 * (n - 1)) ** 0.5 - 1) // 2 + 1 # calculate the total number of digits used to number all the problems in the collection total_digits = sum(len(str(i)) for i in range(1, total_problems + 1)) # print the values of T and M print(total_digits) print(int(n_page)) if __name__ == '__main__': # read input values p, n = map(int, input().split()) # validate input values if not validate_input(p, n): print("Datele nu corespund restricțiilor impuse.") else: print("Datele sunt introduse corect.") solve(p, n) </syntaxhighlight> '''Explicatie cod:''' Acest cod implementează un algoritm care calculează numărul total de cifre folosite pentru a numerota toate problemele dintr-o carte de probleme și numărul de pagini necesare pentru a include o problemă dată, în funcție de numărul de probleme pe pagină și numărul problemei. Inputul constă din două numere întregi p și n, unde p reprezintă numărul de probleme pe pagină și n este numărul problemei căutate. Funcția `validate_input` verifică dacă valorile p și n îndeplinesc restricțiile impuse. Dacă acestea nu sunt îndeplinite, se va returna `False`. Dacă valorile sunt corecte, se va returna `True`. Funcția `solve` primește valorile validate și calculează numărul total de probleme în primele p pagini, numărul de pagini necesare pentru a include problema n și numărul total de cifre folosite pentru a numerota toate problemele din carte. Apoi, afișează numărul total de cifre și numărul de pagini necesare. În secțiunea `__name__ == '__main__'`, se vor citi valorile de la intrare, apoi se vor valida și, dacă valorile sunt corecte, se va apela `solve` pentru a rezolva problema și a afișa rezultatele. Dacă valorile nu sunt corecte, se va afișa mesajul "Datele nu corespund restricțiilor impuse."
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width