3303 - Nr Curat

From Bitnami MediaWiki

Sursa: [1]


Cerința[edit | edit source]

Se dau cel mult 1000 numere naturale mai mici decât 100.000.000. Să se stabilească despre fiecare număr dacă este sau nu curat.

Date de intrare[edit | edit source]

Fișierul de intrare nrcurat.in conține pe prima linie cel mult 1000 numere naturale mai mici decât 100.000.000, separate prin spații.

Date de ieșire[edit | edit source]

Fișierul de ieșire nrcurat.out va conține pe prima linie pentru fiecare număr x din fișierul de intrare valoarea 1 dacă x este curat sau 0 în caz contrar. Valorile sunt separate prin câte un spațiu.

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

în fișier sunt cel mult 1000 de numere naturale mai mici decât 100.000.000

Exemplu[edit | edit source]

nrcurat.in
345 18 53 986310 467 1638
nrcurat.out
0 1 0 1 0 1

Explicație[edit | edit source]

Numerele 18, 986310 și 1638 sunt numere curate.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> with open('nrcurat.in', 'r') as f_in, open('nrcurat.out', 'w') as f_out:

   # citim numerele din fisierul de intrare
   numbers = list(map(int, f_in.readline().strip().split()))
   # parcurgem fiecare numar
   for n in numbers:
       clean = True
       # parcurgem fiecare cifra a numarului
       for digit in str(n):
           if digit == '0':
               continue
           if n % int(digit) != 0:
               clean = False
               break
       # scriem rezultatul in fisierul de iesire
       f_out.write('1 ' if clean else '0 ')

</syntaxhighlight>