0268 - Div K

From Bitnami MediaWiki
Revision as of 19:27, 17 March 2023 by Alexandra Leș (talk | contribs) (Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale şi un număr natural '''k'''. Afişaţi acele numere date care au cel puţin '''k''' divizori. == Date de intrare == Fişierul de intrare '''divk.in''' conţine pe prima linie numerele '''n''' şi '''k''', iar pe a doua linie '''n''' numere naturale separate prin spaţii. == Date de ieşire == Fişierul de ieşire '''divk.out''' va conţine pe prima linie numerele care au cel puţin '''k''' divizori, separate printr-un spaţiu,...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Se dau n numere naturale şi un număr natural k. Afişaţi acele numere date care au cel puţin k divizori.

Date de intrare

Fişierul de intrare divk.in conţine pe prima linie numerele n şi k, iar pe a doua linie n numere naturale separate prin spaţii.

Date de ieşire

Fişierul de ieşire divk.out va conţine pe prima linie numerele care au cel puţin k divizori, separate printr-un spaţiu, în ordinea în care au fost citite.

Restricții și precizări

  • 1 ⩽ n ⩽ 100
  • numerele de pe a doua linie a fişierului de intrare, precum şi k vor avea cel mult 9 cifre

Exemplu

divk.in
6 5
100 9 400 56 7 10
divk.out
Datele introduse corespund restricțiilor impuse.
100 400 56

Rezolvare

<syntaxhighlight lang="python" line> import math def validare_date_numar(k):

   flag = False
   if numar.isdigit():
       if 0 <= int(k) <= 1_000_000_000:
           flag = True
   return flag


def validare_date_numere(n):

   flag = False
   if 0 <= int(n) <= 1000:
       flag = True
   return flag


def numere_cu_k_divizori(n, k, numere):

   rezultat = []
   for nr in numere:
       divizori = 0
       rad_nr = int(math.sqrt(nr))
       for i in range(1, rad_nr + 1):
           if nr % i == 0:
               divizori += 2
               if i == nr // i:
                   divizori -= 1
       if divizori >= k:
           rezultat.append(nr)
   return rezultat


if __name__ == '__main__':

  k = input()
   if validare_date(numar):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
   with open('divk.in', 'r') as f:
       n, k = map(int, f.readline().split())
       numere = list(map(int, f.readline().split()))
   rezultat = numere_cu_k_divizori(n, k, numere)
   with open('divk.out', 'w') as f:
       f.write(' '.join(map(str, rezultat)))
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>