2221 - Cifre 003

From Bitnami MediaWiki

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.