3203 - SimonaH: Difference between revisions
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... |
No edit summary |
||
Line 13: | Line 13: | ||
== Restrictii si precizari == | == Restrictii si precizari == | ||
*1 ≤ n ≤ 10 | *1 ≤ n ≤ 10**18 | ||
*2 ≤ p ≤ 5 | *2 ≤ p ≤ 5 | ||
Revision as of 09:20, 12 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 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.