2221 - Cifre 003: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/2221/cifre003] == Cerinţa == Se dă un număr natural '''numar'''. Să se afle câte dintre numerele obținute din '''numar''' prin ștergerea unei cifre, sunt divizibile cu 3. == Date de intrare == Programul citește de la tastatură numărul '''numar'''. == Date de ieşire == Programul va afișa pe ecran numărul numerelor obţinute din '''numar''' prin ștergerea unei cifre, care sunt divizibile cu 3. == Restricții și precizări =...
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
Sursă: [https://www.pbinfo.ro/probleme/2221/cifre003]
Sursă: [https://www.pbinfo.ro/probleme/2221/cifre003]
== Cerinţa ==
== Cerinţa ==
Se dă un număr natural '''numar'''. Să se afle câte dintre numerele obținute din '''numar''' prin ștergerea unei cifre, sunt divizibile cu 3.
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 ==
== Date de intrare ==
Programul citește de la tastatură numărul '''numar'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieşire ==
== Date de ieşire ==
Programul va afișa pe ecran numărul numerelor obţinute din '''numar''' prin ștergerea unei cifre, care sunt divizibile cu 3.
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 ==
== Restricții și precizări ==
* 1 ⩽ numar ⩽2.000.000.000  
* 1 ⩽ n ⩽2.000.000.000  
*  dacă '''numar''' are o cifră, prin ştergerea unei cifre el devine 0
*  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ă
* dacă prin ştergerea unei cifre numărul rămas începe cu 0, zerourile de la început se elimină
== Exemplu ==
== Exemplu ==
Line 14: Line 14:
: 23701
: 23701
; Ieșire
; Ieșire
: "Datele introduse sunt corecte."
: 2
: 2
== Explicație ==
== Explicație ==
Line 21: Line 22:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


numar = input().strip()
def este_numar_valid(numar):
numere_divizibile_cu_3 = 0
    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.")


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


print(numere_divizibile_cu_3)


</syntaxhighlight>
</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'''.<br><br>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.<br><br>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.

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.