3203 - SimonaH: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 1: Line 1:
== Cerinta ==
== 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.
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 ==
== Date de intrare ==


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


== Date de iesire ==
== 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.
Fișierul de ieșire '''simonahout.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 ==
== Restrictii si precizari ==


*1 n 10^18
*1 ⩽ n ⩽ 10^18
*2 p 5
*2 ⩽ p ⩽ 5


== Exemplul 1 ==
== Exemplul 1 ==
;Intrare
;Intrare
:325 5
:325 5
;Iesire
;Iesire
;Datele introduse corespund restrictiilor impuse
;Datele introduse corespund restrictiilor impuse
Line 29: Line 27:
:652 1
:652 1
;Iesire
;Iesire
;Datele introduse nu corespund restrictiilor impuse
:Datele introduse nu corespund restrictiilor impuse




Line 50: Line 48:
def main():
def main():
     # Citirea datelor de intrare din fișier
     # Citirea datelor de intrare din fișier
     with open("simonah.txt", "r") as f:
     with open("simonahin.txt", "r") as f:
         n, p = map(int, f.readline().split())
         n, p = map(int, f.readline().split())


Line 57: Line 55:


     # Scrierea rezultatului în fișierul de ieșire
     # Scrierea rezultatului în fișierul de ieșire
     with open("simonah.txt", "w") as g:
     with open("simonahout.txt", "w") as g:
         g.write(str(rezultat))
         g.write(str(rezultat))



Revision as of 08:31, 27 December 2023

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 simonahin.txt conține pe prima linie numerele n şi p.

Date de iesire

Fișierul de ieșire simonahout.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("simonahin.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("simonahout.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.