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
3685 - Primest Prime Pancakes
(section)
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!
==Rezolvare== <syntaxhighlight lang="python" line="1" start="1"> # Functie pentru a verifica daca un numar este prim def is_prime(pret_n): if pret_n <= 1: return False if pret_n <= 3: return True if pret_n % 2 == 0 or pret_n % 3 == 0: return False i = 5 while i * i <= pret_n: if pret_n % i == 0 or pret_n % (i + 2) == 0: return False i += 6 return True # Functie pentru a obtine suma cifrelor unui numar def sum_digits(pret_n): return sum(int(digit) for digit in str(pret_n)) # Functie pentru a obtine produsul cifrelor unui numar def product_digits(pret_n): product = 1 for digit in str(pret_n): product *= int(digit) return product # Functie pentru a obtine profitul maxim def max_profit(pret_n, coduri, pret_x, pret_p, pret_d): profit = 0 for code in coduri: max_price = pret_n # Parcurgem toate cifrele si incercam sa le schimbam cu o alta cifra for i in range(10): for j in range(len(str(code))): # Cream un nou cod prin schimbarea unei cifre new_code = list(str(code)) new_code[j] = str(i) new_code = int(''.join(new_code)) price = pret_x # Verificam daca noul cod este prim si adaugam la pret daca este cazul if is_prime(new_code): price += new_code + pret_p # Adaugam la pret pentru fiecare cifra prima din cod for digit in str(new_code): if is_prime(int(digit)): price += pret_d[int(digit)] # Verificam daca suma cifrelor codului este numar prim si adaugam la pret daca este cazul if is_prime(sum_digits(new_code)): price += sum_digits(new_code) # Verificam daca produsul cifrelor codului este numar prim si adaugam la pret daca este cazul if is_prime(product_digits(new_code)): price += product_digits(new_code) # Actualizam pretul maxim pentru acest cod de clatita max_price = max(max_price, price) # Adaugam la profit pretul maxim obtinut pentru acest cod de clatita profit += max_price return profit # Functie pentru a verifica daca datele de intrare sunt valide def verificare_date_intrare(pret_n, coduri, pret_x, pret_p, pret_d): if 1 <= pret_n <= 100000 and 1 <= pret_x <= 1000000 and 1 <= pret_p <= 1000000 and len(pret_d) == 4: for code in coduri: if 10 <= code <= 999999: continue else: return False return True else: return False if __name__ == "__main__": try: print("Introduceți datele de intrare în următoarea ordine, fiecare pe o linie nouă: numărul de coduri, codurile (separate prin spațiu), prețul x și p (separate prin spațiu), prețul d pentru cifrele 2, 3, 5 și 7 (separate prin spațiu).") n = int(input()) codes = list(map(int, input().split())) x, p = map(int, input().split()) d = dict(zip([2, 3, 5, 7], map(int, input().split()))) if verificare_date_intrare(n, codes, x, p, d): # verificam datele de intrare print("Datele de intrare corespund restrictiilor impuse.") print(max_profit(n, codes, x, p, d)) # apelam functia de rezolvare else: print("Datele de intrare nu corespund restrictiilor impuse.") # ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator except ValueError: print("Datele de intrare nu corespund restrictiilor impuse.") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse.") </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