3203 - SimonaH

From Bitnami MediaWiki
Revision as of 09:18, 12 December 2023 by Mesarosdenisa (talk | contribs) (Pagină nouă: == Cerinta == Din perfecţiunea Simonei H. a apărut şi noţiunea de p-număr, un număr natural cu cifre nenule, ale cărui cifre le putem permuta. Să se afle suma resturilor împărţirii tuturor numerelor obţinute prin permutarea cifrelor lui n la un număr dat p. == Date de intrare == Fișierul de intrare simonah.txt conține pe prima linie numerele n şi p. == Date de iesire == Fișierul de ieșire simonah.txt va conține pe prima linie suma resturilor împărţi...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinta

Din perfecţiunea Simonei H. a apărut şi noţiunea de p-număr, un număr natural cu cifre nenule, ale cărui cifre le putem permuta. Să se afle suma resturilor împărţirii tuturor numerelor obţinute prin permutarea cifrelor lui n la un număr dat p.

Date de intrare

Fișierul de intrare simonah.txt conține pe prima linie numerele n şi p.

Date de iesire

Fișierul de ieșire simonah.txt va conține pe prima linie suma resturilor împărţirii tuturor numerelor obţinute prin permutarea cifrelor lui n la numărul dat p.

Restrictii si precizari

  • 1 ≤ n ≤ 10^18
  • 2 ≤ p ≤ 5

Exemplul 1

Intrare
325 5


Iesire
Datele introduse corespund restrictiilor impuse
10

Exemplul 2

Intrare
652 1
Iesire
Datele introduse nu corespund restrictiilor impuse


Rezolvare

<syntaxhighlight lang="python3" line="1"> from itertools import permutations

def suma_resturi_permutari(n, p):

   n_str = str(n)
   cifre = list(n_str)
   numere_permutate = set(permutations(cifre))
   suma = 0
   for permutare in numere_permutate:
       numar_permutat = int("".join(permutare))
       suma += numar_permutat % p
   return suma

def main():

   # Citirea datelor de intrare din fișier
   with open("simonah.txt", "r") as f:
       n, p = map(int, f.readline().split())
   # Calcularea și afișarea rezultatului
   rezultat = suma_resturi_permutari(n, p)
   # Scrierea rezultatului în fișierul de ieșire
   with open("simonah.txt", "w") as g:
       g.write(str(rezultat))

if __name__ == "__main__":

   main()

</syntaxhighlight>

Explicatie

Numerele 325, 235, 532, 352, 253, 523 împărţite la 5 dau resturile 0,0,2,2,3,3, suma acestora fiind 10.