3926 - Alternant 1: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
No edit summary
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/3926/alternant1]
== Explicație ==
Spunem că un număr natural este alternant dacă cifrele pare alternează cu cele impare. De exemplu, numere alternante sunt 236, 6, 12345678.
== Cerinţa ==
== Cerinţa ==
Se dă un număr natural. Să se verifice dacă este sau nu alternant.
Se dă un număr natural. Să se verifice dacă este sau nu alternant.
== Explicație ==
Spunem că un număr natural este alternant dacă cifrele pare alternează cu cele impare. De exemplu, numere alternante sunt 236, 6, 12345678.


== Date de intrare ==
== Date de intrare ==
Line 27: Line 28:


== Rezolvare ==
== Rezolvare ==
=== Rezolvare ver. 1 ===
<syntaxhighlight lang="python" line>
def verifica_numar(numar):
    try:
        numar_int = int(numar)  # Convertim numarul introdus într-un întreg
        if numar_int <= 0:
            print("Numărul introdus nu este un număr natural.")
        elif str(numar_int) != numar:
            print("Numărul introdus conține caractere nevalide.")
        else:
            paritate = numar_int % 2  # Initial considerăm că prima cifră e pară/impară
            # Verificăm dacă cifrele sunt alternate
            cifre = str(numar_int)
            for i in range(1, len(cifre)):
                if int(cifre[i]) % 2 != paritate:  # Dacă cifra curentă are o paritate diferită de cifra anterioară
                    paritate = int(cifre[i]) % 2  # Schimbăm paritatea
                else:
                    print("Numărul nu este alternant.")
                    break
            else:
                print("Numărul este alternant.")
    except ValueError:
        print("Numărul introdus nu este valid.")
if __name__ == "__main__":
    numar = input("Introduceți un număr natural: ")
    verifica_numar(numar)
</syntaxhighlight>
=== Rezolvare ver. 2 ===
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


numar = input("Introduceți un număr natural: ")


# Verificam daca numarul este un numar natural si contine doar cifre
try:
if not numar.isdigit():
     numar_int = int(numar)  # Convertim numarul introdus într-un întreg
     print("Numarul introdus nu este valid.")
else:
    # Initializez o variabila care sa retina daca cifrele sunt pare sau impare
    paritate = int(numar[0]) % 2 # Initial consideram ca prima cifra e par/impar


     # Verificam daca cifrele sunt alternate
     if numar_int <= 0:
    for i in range(1, len(numar)):
        print("Numărul introdus nu este un număr natural.")
        if int(numar[i]) % 2 != paritate:  # Daca cifra curenta are o paritate diferita de cifra anterioara
    elif str(numar_int) != numar:
            paritate = int(numar[i]) % 2  # Schimbam paritatea
        print("Numărul introdus conține caractere nevalide.")
    else:
        paritate = numar_int % 2  # Initial considerăm că prima cifră e pară/impară
 
        # Verificăm dacă cifrele sunt alternate
        cifre = str(numar_int)
        for i in range(1, len(cifre)):
            if int(cifre[i]) % 2 != paritate:  # Dacă cifra curentă are o paritate diferită de cifra anterioară
                paritate = int(cifre[i]) % 2  # Schimbăm paritatea
            else:
                print("Numărul nu este alternant.")
                break
         else:
         else:
             print("Numarul nu este alternant.")
             print("Numărul este alternant.")
            break
    else:
        print("Numarul este alternant.")


except ValueError:
    print("Numărul introdus nu este valid.")


</syntaxhighlight>
</syntaxhighlight>

Revision as of 10:31, 15 May 2023

Sursa: [1]

Explicație

Spunem că un număr natural este alternant dacă cifrele pare alternează cu cele impare. De exemplu, numere alternante sunt 236, 6, 12345678.

Cerinţa

Se dă un număr natural. Să se verifice dacă este sau nu alternant.

Date de intrare

Programul citește de la tastatură numărul.

Date de ieşire

Programul va afișa pe ecran mesajul da dacă numarul este alternant sau mesajul nu dacă nu este alternant.

Restricții și precizări

  • 0 ≤ numar ≤ 1.000.000.000.000.000

Exemplu 1

Intrare
265
Ieșire
nu

Exemplu 2

Intrare
8183
Ieșire
da


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line>

def verifica_numar(numar):

   try:
       numar_int = int(numar)  # Convertim numarul introdus într-un întreg
       if numar_int <= 0:
           print("Numărul introdus nu este un număr natural.")
       elif str(numar_int) != numar:
           print("Numărul introdus conține caractere nevalide.")
       else:
           paritate = numar_int % 2  # Initial considerăm că prima cifră e pară/impară
           # Verificăm dacă cifrele sunt alternate
           cifre = str(numar_int)
           for i in range(1, len(cifre)):
               if int(cifre[i]) % 2 != paritate:  # Dacă cifra curentă are o paritate diferită de cifra anterioară
                   paritate = int(cifre[i]) % 2  # Schimbăm paritatea
               else:
                   print("Numărul nu este alternant.")
                   break
           else:
               print("Numărul este alternant.")
   except ValueError:
       print("Numărul introdus nu este valid.")


if __name__ == "__main__":

   numar = input("Introduceți un număr natural: ")
   verifica_numar(numar)

</syntaxhighlight>

Rezolvare ver. 2

<syntaxhighlight lang="python" line>

numar = input("Introduceți un număr natural: ")

try:

   numar_int = int(numar)  # Convertim numarul introdus într-un întreg
   if numar_int <= 0:
       print("Numărul introdus nu este un număr natural.")
   elif str(numar_int) != numar:
       print("Numărul introdus conține caractere nevalide.")
   else:
       paritate = numar_int % 2  # Initial considerăm că prima cifră e pară/impară
       # Verificăm dacă cifrele sunt alternate
       cifre = str(numar_int)
       for i in range(1, len(cifre)):
           if int(cifre[i]) % 2 != paritate:  # Dacă cifra curentă are o paritate diferită de cifra anterioară
               paritate = int(cifre[i]) % 2  # Schimbăm paritatea
           else:
               print("Numărul nu este alternant.")
               break
       else:
           print("Numărul este alternant.")

except ValueError:

   print("Numărul introdus nu este valid.")

</syntaxhighlight>