2221 - Cifre 003
Sursă: [1]
Cerinţa
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
Programul citește de la tastatură numărul n.
Date de ieşire
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
- 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
- Intrare
- 23701
- Ieșire
- "Datele introduse sunt corecte."
- 2
Explicație
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
<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 = 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
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.