1528 - Operatii Matematice: Difference between revisions
Sinn Erich (talk | contribs) |
Sinn Erich (talk | contribs) |
||
Line 46: | Line 46: | ||
cifre = list(map(int, input("Introduceti cifrele: ").split())) | cifre = list(map(int, input("Introduceti cifrele: ").split())) | ||
return n, cifre | return n, cifre | ||
def play_game(cifre): | def play_game(cifre): | ||
Line 60: | Line 61: | ||
cristi_nr = cristi_nr + maria_nr_nou | cristi_nr = cristi_nr + maria_nr_nou | ||
return maria_suma | return maria_suma | ||
def print_result(maria_suma): | def print_result(maria_suma): | ||
Line 71: | Line 73: | ||
print("NU, nu este divizibil cu 7.") | print("NU, nu este divizibil cu 7.") | ||
n, cifre = read_input() | |||
maria_suma = play_game(cifre) | if __name__ == '__main__': | ||
print_result(maria_suma) | n, cifre = read_input() | ||
if n <= 0 or n > 100: | |||
print("Numarul de cifre trebuie sa fie intre 1 si 100.") | |||
elif len(cifre) != n: | |||
print("Trebuie sa introduceti exact", n, "cifre.") | |||
else: | |||
maria_suma = play_game(cifre) | |||
print_result(maria_suma) | |||
Revision as of 17:37, 2 April 2023
Sursa: [1]
Cerinţa
Maria, Cristi şi Alex au găsit o modalitate de a-şi îmbunătăţi viteza de efectuare a operaţiilor matematice printr-un joc care să corespundă nivelului de vârsta al fiecăruia. Maria ştie doar operaţiile de adunare şi scădere, Cristi a învăţat înmulţirile iar Alex fiind în clasa a 5-a studiază divizibilitatea numerelor.
Jocul se desfăşoară în felul următor: Maria alege o cifra – cifra de start (întotdeauna este nenulă). Cristi o înmulţeşte cu 3. La numărul obţinut de Cristi, Maria adaugă o nouă cifră şi îi spune lui Cristi suma obţinută. Cristi caută cel mai mare multiplu a lui 7 mai mic decât numărul obţinut de Maria şi îl spune Mariei. Aceasta scade din numărul ei multiplul spus de Cristi şi obţine un număr nou. Din acest moment jocul se reia, Cristi înmulţeşte cu 3, Maria alege o cifră şi o adaugă la numărul obţinut de Cristi s.a.m.d…
Între timp Alex este atent la cifrele pe care Maria le-a introdus în joc şi caută să vadă dacă numărul format din aceste cifre este divizibil cu 7.
1) Aflaţi care este numărul obţinut de Maria după adăugarea ultimei cifre.
2) Ajutaţi-l pe Alex să verifice dacă numărul format din cifrele alese de Maria este divizibil cu 7.
Date de intrare
Programul va contine pe prima linie numărul de cifre alese de Maria iar pe următoarea linie separate prin spaţiu cifrele în ordinea alegerii acestora.
Date de ieșire
Programul va conține pe prima linie numărul obţinut la cerința 1 şi pe a doua linie răspunsul DA în cazul în care răspunsul lui Alex trebuie să fie afirmativ, respectiv NU în caz contrar.
Dacă datele sunt introduse corect, programul va rula.
Î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
Numărul de cifre alese de Maria este maxim 100.
Pentru rezolvarea corectă a primei cerinţe se obţine 50% din punctajul unui test.
Exemplul 1
- Intrare
- 4
- 2 3 4 5
- Ieșire
- 14
- DA
Rezolvare
<syntaxhighlight lang="python" line>
- 1528
def read_input():
""" Citeste datele de intrare si returneaza n si lista de cifre. """ n = int(input("Introduceti numarul de cifre: ")) cifre = list(map(int, input("Introduceti cifrele: ").split())) return n, cifre
def play_game(cifre):
""" Returneaza numarul obtinut de Maria dupa joc. """ cristi_nr = cifre[0] * 3 maria_suma = cifre[0] for cifra in cifre[1:]: cristi_nr = cristi_nr * 3 maria_suma = maria_suma + cifra maxim_7 = (maria_suma // 7) * 7 maria_nr_nou = maria_suma - maxim_7 cristi_nr = cristi_nr + maria_nr_nou return maria_suma
def print_result(maria_suma):
""" Afiseaza numarul obtinut de Maria si daca acesta este divizibil cu 7. """ print("Numarul obtinut de Maria este:", maria_suma) if maria_suma % 7 == 0: print("DA, este divizibil cu 7.") else: print("NU, nu este divizibil cu 7.")
if __name__ == '__main__':
n, cifre = read_input() if n <= 0 or n > 100: print("Numarul de cifre trebuie sa fie intre 1 si 100.") elif len(cifre) != n: print("Trebuie sa introduceti exact", n, "cifre.") else: maria_suma = play_game(cifre) print_result(maria_suma)
</syntaxhighlight> Explicatie cod:
Acest cod este scris in Python si contine trei functii: "read_input()", "play_game()", si "print_result()".
Functia "read_input()" citeste datele de intrare de la utilizator si returneaza doua valori: "n" (numarul de cifre) si o lista de cifre.
Functia "play_game()" ia lista de cifre returnata de functia "read_input()" si simuleaza jocul descris in cerinta problemei pentru a calcula numarul obtinut de Maria. Aceasta functie returneaza numarul obtinut de Maria.
Functia "print_result()" ia numarul obtinut de Maria returnat de functia "play_game()" si afiseaza acest numar, impreuna cu un mesaj care indica daca numarul este divizibil cu 7 sau nu.
In final, codul apeleaza aceste functii in ordinea "read_input()", "play_game()", si "print_result()" pentru a citi datele de intrare, a calcula numarul obtinut de Maria si a afisa rezultatul.