0269 - Puteri K

De la Universitas MediaWiki
Versiunea din 8 noiembrie 2023 16:34, autor: AntalKrisztian (discuție | contribuții) (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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

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