0269 - Puteri K

From Bitnami MediaWiki
Revision as of 16:34, 8 November 2023 by AntalKrisztian (talk | contribs) (Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale şi un număr natural '''k'''. Afişaţi în ordine crescătoare acele numere date care sunt puteri ale lui '''k'''. == Date de intrare == Fişierul de intrare '''puterik.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 '''puterik.out''' va conţine pe prima linie numerele care sunt puteri ale lui '''k''', separ...)
(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 în ordine crescătoare acele numere date care sunt puteri ale lui k.

Date de intrare

Fişierul de intrare puterik.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 puterik.out va conţine pe prima linie numerele care sunt puteri ale lui k, separate printr-un spaţiu, în ordine crescătoare.

Restricții și precizări

  • 1 ⩽ n ⩽ 100
  • 2 ⩽ k ⩽ 10
  • numerele de pe a doua linie a fişierului de intrare vor avea cel mult 8 cifre

Exemplu

puterik.in
8 2
32 56 317 809 256 2 1 60
puterik.out
1 2 32 256

Rezolvare

<syntaxhighlight lang="python" line> import math # Importăm modulul math pentru a folosi funcția log

def puterik():

   with open('puterik.in', 'r') as intrare:  # Deschidem fișierul de intrare pentru citire
       n, k = map(int, intrare.readline().split())  # Citim n și k de pe prima linie a fișierului
       numere = list(map(int, intrare.readline().split()))  # Citim numerele de pe a doua linie a fișierului
   # Verificăm dacă fiecare număr este o putere a lui k și creăm o listă cu aceste numere
   puteri_k = [num for num in numere if (num != 0 and ((math.log(num, k) % 1) == 0))]
   puteri_k.sort()  # Sortăm lista în ordine crescătoare
   with open('puterik.out', 'w') as iesire:  # Deschidem fișierul de ieșire pentru scriere
       iesire.write(' '.join(map(str, puteri_k)))  # Scriem numerele în fișier, separate printr-un spațiu

puterik() # Apelăm funcția

</syntaxhighlight>