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
2097 - Vistiernic
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!
== Enunț == Împăratul Persiei, Seram dă de ştire în toată împărăția sa, că vrea să-şi aleagă vistiernic care să-i administreze averea. El precizează că visteria palatului are n încăperi numerotate cu numere naturale diferite de '''0'''. Suma de bani pe care o are în aceste încăperi este egală cu produsul numerelor cu care sunt numerotate încăperile visteriei. De asemenea împăratul dă de ştire că va alege pe acel supus vistiernic, care ştie să calculeze în câte zerouri se termină numărul ce reprezintă averea sa. == Cerinţa == Scrieţi un program care determină numărul de zerouri în care se termină averea împăratului. == Date de intrare == De pe prima linie din fişierul de intrare '''vistiernic.in''' se citeşte un număr natural '''n''', ce reprezintă numărul de încăperi ale visteriei. De pe linia următoare se citesc '''n''' numere naturale separate prin spaţii reprezentând numerele înscrise pe uşile încăperilor visteriei. == Date de ieșire == Dacă datele sunt introduse corect, în fișier se va afișa: '''"Datele sunt introduse corect."''', apoi pe prima linie în fişierul vistiernic.out se va afişa un număr ce reprezintă numărul de zerouri în care se termină averea împăratului. În cazul în care datele nu respectă restricțiile, se va afișa în fișier: '''"Datele nu corespund restricțiilor impuse."'''. == Restricţii şi precizări == * 1 ⩽ n ⩽ 1000 * 1 ⩽ numărul de pe uşă ⩽ 32767, pentru fiecare încăpere ==Exemplu == ; vistiernic.in : 4 : 8 225 64 15 ; vistiernic.out : Datele sunt introduse corect. : 3 == Explicație == Averea împăratului este egală cu numărul dat de produsul '''8*225*64*15'''. Acest număr se termină în '''3''' zerouri. == Rezolvare == <syntaxhighlight lang="python" line> # Această funcție validează datele de intrare conform restrițiilor date def validare_date(n, nr): if n < 1 or n > 1000: return False for nr in nr: if nr < 1 or nr > 32767: return False return True # Această funcție numără numărul de zerouri finale din produsul numerelor date def numara_zerouri(n, nr): cnt2 = 0 cnt5 = 0 for i in range(n): tmp = nr[i] while tmp % 2 == 0: cnt2 += 1 tmp //= 2 while tmp % 5 == 0: cnt5 += 1 tmp //= 5 return min(cnt2, cnt5) if __name__ == '__main__': with open('vistiernic.in', 'r') as fin, open('vistiernic.out', 'w') as fout: n = int(fin.readline().strip()) # citirea numărului de numere și conversia la int nr = list(map(int, fin.readline().split())) # citirea listei de numere și conversia la listă de int-uri if validare_date(n, nr): # validare date de intrare fout.write("Datele sunt introduse corect.\n") fout.write(str(numara_zerouri(n, nr))) # calcularea și scrierea numărului de zerouri în fișierul de ieșire else: fout.write("Datele nu corespund restricțiilor impuse.") # scrierea mesajului de eroare în fișierul de ieșire </syntaxhighlight>
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