4226 - Divizibil: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
Line 66: Line 66:
def validate_cerinta(cerinta):
def validate_cerinta(cerinta):
     if cerinta not in [1, 2]:
     if cerinta not in [1, 2]:
         print("Cerinta trebuie sa fie 1 sau 2.")
         print("Datele introduse nu corespund cerintelor.")
         return False
         return False
     return True
     return True
Line 73: Line 73:
def validate_n(n):
def validate_n(n):
     if not 1 <= n <= 1000000000:
     if not 1 <= n <= 1000000000:
         print("n trebuie sa fie intre 1 si 1000000000.")
         print("Datele introduse nu corespund cerintelor.")
         return False
         return False
     return True
     return True
Line 80: Line 80:
def validate_variabila(variabila):
def validate_variabila(variabila):
     if not 2 <= variabila <= 9:
     if not 2 <= variabila <= 9:
         print("Variabila trebuie sa fie intre 2 si 9.")
         print("Datele introduse nu corespund cerintelor.")
         return False
         return False
     return True
     return True
Line 87: Line 87:
def validate_a_b_c(a, b, c):
def validate_a_b_c(a, b, c):
     if not all([is_prime(i) for i in [a, b, c]]):
     if not all([is_prime(i) for i in [a, b, c]]):
         print("Variabilele a, b si c trebuie sa fie prime intre ele.")
         print("Datele introduse nu corespund cerintelor.")
         return False
         return False
     return True
     return True
Line 101: Line 101:




def main():
if __name__ == '__main__':
     print("Introduceți cerința:")
     print("Introduceți cerința:")
     cerinta = int(input())
     cerinta = int(input())
     if not validate_cerinta(cerinta):
     if not validate_cerinta(cerinta):
         return
         exit()
     print("Introduceți numărul total:")
     print("Introduceți numărul total:")
     n = int(input())
     n = int(input())
     if not validate_n(n):
     if not validate_n(n):
         return
         exit()
     if cerinta == 1:
     if cerinta == 1:
         print("Introduceți a:")
         print("Introduceți a:")
Line 116: Line 116:
         b = int(input())
         b = int(input())
         if not all([validate_variabila(i) for i in [a, b]]):
         if not all([validate_variabila(i) for i in [a, b]]):
             return
             exit()
         rezultat = calculeaza_rezultatul(cerinta, n, a, b)
         rezultat = calculeaza_rezultatul(cerinta, n, a, b)
     elif cerinta == 2:
     elif cerinta == 2:
Line 126: Line 126:
         c = int(input())
         c = int(input())
         if not all([validate_variabila(i) for i in [a, b, c]]):
         if not all([validate_variabila(i) for i in [a, b, c]]):
             return
             exit()
         if not validate_a_b_c(a, b, c):
         if not validate_a_b_c(a, b, c):
             return
             exit()
         rezultat = calculeaza_rezultatul(cerinta, n, a, b, c)
         rezultat = calculeaza_rezultatul(cerinta, n, a, b, c)
     else:
     else:
         rezultat = n
         rezultat = n
     print("Rezultatul este:", rezultat)
     print("Datele introduse corespund cerintelor.\n",rezultat)
 
main()
 


</syntaxhighlight>
</syntaxhighlight>

Revision as of 13:56, 12 May 2023

Sursa: [1]

Cerinţa

Teodora vă roagă sa o ajutați cu intrebările si va recompenseaza cu 100 de puncte.

Date de intrare

Programul citește de la tastatură numărul t ce poate fi 1 sau 2. Dacă t este 1 se vor citi trei numere n, c1, c2 cu semnificația din enunț. Dacă t este 2 se vor citi patru numere n, c1, c2, c3 cu semnificația din enunț.

Date de ieșire

Programul va afișa pe ecran numărul ct, reprezentând numărul cerut.

Restricţii şi precizări

  • t poate fi 1 sau 2
  • 1 ⩽ n ⩽ 1.000.000.000
  • 2 ⩽ c1, c2, c3 ⩽ 9
  • oricare două cifre sunt prime intre ele

Exemplul 1

Intrare
Introduceți cerința:

1

Introduceți numărul total:

10

Introduceți a:

2

Introduceți b:

3

Ieșire
Datele introduse corespund cerintelor.
3


Exemplul 2

Intrare
Introduceți cerința:

2

Introduceți numărul total:

10

Introduceți a:

3

Introduceți b:

5

Introduceți c:

7

Ieșire
Datele introduse corespund cerintelor.
4


Rezolvare

<syntaxhighlight lang="python" line>

  1. 4226

def calculeaza_rezultatul(cerinta, n, a=0, b=0, c=0):

   rezultat = n
   if cerinta == 1:
       rezultat = rezultat - (n // a) - (n // b)
       rezultat = rezultat + (n // (a * b))
   elif cerinta == 2:
       rezultat = rezultat - (n // a) - (n // b) - (n // c)
       rezultat = rezultat + (n // (a * b)) + (n // (b * c)) + (n // (a * c))
       rezultat = rezultat - (n // (a * b * c))
   return rezultat


def validate_cerinta(cerinta):

   if cerinta not in [1, 2]:
       print("Datele introduse nu corespund cerintelor.")
       return False
   return True


def validate_n(n):

   if not 1 <= n <= 1000000000:
       print("Datele introduse nu corespund cerintelor.")
       return False
   return True


def validate_variabila(variabila):

   if not 2 <= variabila <= 9:
       print("Datele introduse nu corespund cerintelor.")
       return False
   return True


def validate_a_b_c(a, b, c):

   if not all([is_prime(i) for i in [a, b, c]]):
       print("Datele introduse nu corespund cerintelor.")
       return False
   return True


def is_prime(n):

   if n < 2:
       return False
   for i in range(2, int(n**0.5)+1):
       if n % i == 0:
           return False
   return True


if __name__ == '__main__':

   print("Introduceți cerința:")
   cerinta = int(input())
   if not validate_cerinta(cerinta):
       exit()
   print("Introduceți numărul total:")
   n = int(input())
   if not validate_n(n):
       exit()
   if cerinta == 1:
       print("Introduceți a:")
       a = int(input())
       print("Introduceți b:")
       b = int(input())
       if not all([validate_variabila(i) for i in [a, b]]):
           exit()
       rezultat = calculeaza_rezultatul(cerinta, n, a, b)
   elif cerinta == 2:
       print("Introduceți a:")
       a = int(input())
       print("Introduceți b:")
       b = int(input())
       print("Introduceți c:")
       c = int(input())
       if not all([validate_variabila(i) for i in [a, b, c]]):
           exit()
       if not validate_a_b_c(a, b, c):
           exit()
       rezultat = calculeaza_rezultatul(cerinta, n, a, b, c)
   else:
       rezultat = n
   print("Datele introduse corespund cerintelor.\n",rezultat)

</syntaxhighlight>

Explicație rezolvare

Acesta este un program care primește de la utilizator o cerință și o serie de numere și apoi calculează și afișează un rezultat în funcție de cerință și numerele introduse.

Funcția principală a programului este calculeaza_rezultatul(), care primește ca parametri o cerință și una sau trei variabile, a, b și c, în funcție de cerință. În funcție de cerință, programul efectuează diferite operații matematice pe numărul total n și pe variabilele a, b și c și calculează un rezultat.

Celelalte funcții din program, cum ar fi validate_cerinta(), validate_n(), validate_variabila() și validate_a_b_c(), sunt folosite pentru a valida input-ul utilizatorului și a asigura că acesta este corect și se află în limitele admise. Funcția is_prime() este utilizată pentru a verifica dacă o variabilă este primă.

În cele din urmă, funcția main() primește input-ul de la utilizator, validează datele introduse și apelează funcția calculeaza_rezultatul() pentru a calcula rezultatul cerut, apoi afișează rezultatul.