2221 - Cifre 003: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 37: | Line 37: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
numar = int(input("Introduceti numarul: ").strip()) | |||
if este_numar_valid(numar): | if este_numar_valid(numar): | ||
print("Datele introduse sunt corecte.") | print("Datele introduse sunt corecte.") | ||
print(numar_divizibile_cu_3(numar)) | print(numar_divizibile_cu_3(int(numar))) | ||
else: | else: | ||
print("Datele introduse nu sunt corecte.") | print("Datele introduse nu sunt corecte.") | ||
Latest revision as of 05:27, 15 May 2023
Sursă: [1]
Cerinţa[edit | edit source]
Se dă un număr natural n. Să se afle câte dintre numerele obținute din n prin ștergerea unei cifre, sunt divizibile cu 3.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieşire[edit | edit source]
Dacă datele introduse sunt corecte, pe ecran se va afișa "Datele introduse sunt corecte.", apoi programul va afișa numărul numerelor obţinute din n prin ștergerea unei cifre, care sunt divizibile cu 3. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽2.000.000.000
- dacă n are o cifră, prin ştergerea unei cifre el devine 0
- dacă prin ştergerea unei cifre numărul rămas începe cu 0, zerourile de la început se elimină
Exemplu[edit | edit source]
- Intrare
- 23701
- Ieșire
- "Datele introduse sunt corecte."
- 2
Explicație[edit | edit source]
Prin eliminarea cifrei 1 se obţine numărul 2370 divizibil cu 3, iar prin eliminarea cifrei 7 se obţine 2301 divizibil cu 3.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def este_numar_valid(numar):
if numar.isdigit() and int(numar) >= 1 and int(numar) <= 2000000000: return True return False
def numar_divizibile_cu_3(numar):
numere_divizibile_cu_3 = 0 for i in range(len(numar)): cifra = int(numar[i]) numar_fara_cifra = numar[:i] + numar[i + 1:] if int(numar_fara_cifra) % 3 == 0: numere_divizibile_cu_3 += 1 return numere_divizibile_cu_3
if __name__ == '__main__':
numar = int(input("Introduceti numarul: ").strip()) if este_numar_valid(numar): print("Datele introduse sunt corecte.") print(numar_divizibile_cu_3(int(numar))) else: print("Datele introduse nu sunt corecte.")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Funcția este_numar_valid(numar) verifică dacă numar este un număr natural valid, adică este format doar din cifre și este în intervalul [1, 2000000000]. Dacă numărul este valid, funcția returnează True, altfel returnează False.
Funcția numar_divizibile_cu_3(numar) primește ca parametru un număr și determină câte dintre numerele obținute prin ștergerea unei cifre sunt divizibile cu 3. Aceasta folosește o buclă for pentru a itera prin fiecare cifră din numar, elimină cifra curentă și verifică dacă numărul obținut este divizibil cu 3. Dacă acesta este divizibil cu 3, funcția incrementează un contor numere_divizibile_cu_3. Funcția returnează numărul de numere divizibile cu 3.
Funcția principală primește un număr de la utilizator folosind funcția input(). Aceasta verifică dacă numărul este valid folosind funcția este_numar_valid(numar). Dacă numărul este valid, se afișează un mesaj de confirmare și numărul de numere divizibile cu 3 prin apelul funcției numar_divizibile_cu_3(numar). Dacă numărul nu este valid, se afișează un mesaj de eroare.