2312 - GuIT

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Ghiţă s-a hotărât să plece de-acasă de Ignat, având nişte previziuni sumbre. Neavând bani, s-a gândit să-şi scoată un single de sezon, “guIT”. Din vânzarea lui a obţinut frumoasa sumă de n dolari.Pentru a câştiga un meniu vegetarian de Crăciun, trebuie să aflaţi suma numerelor prime din descompunerea lui n, ştiind că n este produs de trei numere prime distincte.

Date de intrare[edit | edit source]

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

Date de ieşire[edit | edit source]

Programul va afișa pe ecran numărul S, reprezentând suma celor trei numere prime din descompunerea lui n.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 10^12

Exemplu[edit | edit source]

Intrare
105
Ieșire
15

Explicație[edit | edit source]

105 = 3•5•7, deci suma este 3+5+7=15.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> import math

def validare_date_numar(n):

   if 1 <= int(n) <= 1000000:
       return True
   else:
       return False

def validare_date(k):

   if 1 <= int(k) <= 1000:
       return True
   else:
       return False

def print_num(n, k):

   s = 0
   d = 2
   while n > 1:
       p = 0
       while n % d == 0:
           n //= d
           p += 1
       if p > 0:
           s += d
       d += 1
       if d * d > n:
           d = n
   return s

if __name__ == '__main__':

   n = input()
   k = input()
   if validare_date_numar(n) and validare_date(k):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       numar = print_num(int(n), int(k))
       print(numar)
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acesta este un cod Python care primește două numere, verifică dacă acestea sunt valide și apoi calculează suma factorilor primi ai primului număr care apar de cel puțin a doua valoare dată. Dacă numerele introduse sunt valide, codul va afișa suma factorilor primi, altfel va afișa un mesaj de eroare.