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
1295 - Cif Pagini
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 == Într-o bibliotecă se află o carte cu o proprietate mai ciudată. Este alcătuită din '''n''' volume, și pentru fiecare fiecare volum numărul de pagini este număr prim. Mai mult, numerele paginilor volumelor sunt numere prime consecutive. Se dau numerele '''n p v''' reprezentând numărul de volume ale cărții, numărul de pagini ale primului volum și numărul cerinței care trebuie rezolvate. Să se afle: a) numărul total de pagini; b) numărul total de cifre folosite pentru numerotarea paginilor celor n volume. == Date de intrare == Programul conține pe prima linie numerele '''n p v''' reprezentând numărul de volume ale unei cărți, numărul de pagini ale primului volum și respectiv numărul cerinței. == Date de ieșire == Dacă v=1, programul va conține numărul '''nt''' , reprezentând numărul total de pagini. Dacă v=2, programul va conține numărul '''np''', reprezentând numărul total de cifre folosite pentru numerotarea paginilor celor '''n''' volume. Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează a) numărul total de pagini b) numărul total de cifre folosite pentru numerotarea paginilor celor n volume. În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse." == Restricţii şi precizări == 1 ≤ '''n''' ≤ 1000 1 ≤ '''p''' < 50.000 '''v''' poate fi doar 1 sau 2; Paginile volumelor se numerotează de la 1 la numărul total de pagini; dacă primul volum are '''k''' pagini, atunci volumul al doilea se va numerota cu '''k+1''', ș.a.m.d. == Exemplul 1 == ; Datele de intrare: : 3 103 1 ; Datele de ieșire: : Datele sunt introduse corect. : 319 <br> == Exemplul 2 == ; Datele de intrare: : Introdu cele trei numere: : 3 103 2 ; Datele de ieșire: : Datele sunt introduse corect. : 9 <br> == Rezolvare == <syntaxhighlight lang="python" line> #1295 def is_prime(n): """ Verifică dacă un număr este prim sau nu. """ if n <= 1: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True def num_digits(n): """ Numără numărul de cifre dintr-un număr. """ return len(str(n)) def find_consecutive_primes(n, p): """ Găsește primele n numere prime consecutive după p. """ pages = [] num = p while len(pages) < n: if is_prime(num): pages.append(num) num += 1 return pages def calculate_total(n, p, v): """ Calculează numărul total de pagini sau cifre. """ pages = find_consecutive_primes(n, p) if v == 1: total_pages = sum(pages) return total_pages elif v == 2: total_digits = sum(num_digits(p) for p in pages) return total_digits def validate_input(n, p, v): """ Verifică dacă datele introduse sunt corecte. """ if n <= 0 or p <= 0 or v not in [1, 2]: print( "Datele nu corespund restricțiilor impuse.") return False return True if __name__ == '__main__': n, p, v = map(int, input("Introdu cele trei numere:").split()) if validate_input(n, p, v): print("Datele sunt corecte") total = calculate_total(n, p, v) print(total) </syntaxhighlight> '''Explicatie cod:''' Acest cod definește trei funcții și le folosește pentru a calcula numărul total de pagini sau cifre într-un set de cărți. Funcția is_prime(n) primește un număr întreg n și returnează True dacă este prim și False în caz contrar. Această funcție utilizează un algoritm de determinare a primelor, parcurgând toate numerele de la 2 la radicalul pătrat al lui n și verificând dacă n este divizibil cu vreunul dintre acestea. Funcția num_digits(n) primește un număr întreg n și returnează numărul de cifre din n. Pentru a face acest lucru, funcția transformă întregul într-un șir de caractere utilizând str(n) și returnează lungimea acestuia utilizând len(). Funcția find_consecutive_primes(n, p) primește doi parametri întregi, n și p, și găsește primele n numere prime consecutive începând cu p. Această funcție utilizează funcția is_prime() pentru a verifica dacă fiecare număr este prim și adaugă numerele prime găsite într-o listă până când lungimea listei este egală cu n. Funcția calculate_total(n, p, v) primește trei parametri întregi, n, p și v, și calculează numărul total de pagini sau cifre, în funcție de valoarea lui v. Această funcție utilizează funcția find_consecutive_primes() pentru a găsi numerele prime și returnează suma lor dacă v este 1 sau suma numărului de cifre ale acestora dacă v este 2. În cele din urmă, codul citește trei numere întregi de la tastatură și apelează funcția calculate_total() cu acestea pentru a calcula numărul total de pagini sau cifre, în funcție de valoarea celui de-al treilea număr. Rezultatul este apoi afișat utilizând print().
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