3203 - SimonaH: Difference between revisions
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 | 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 | 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 | *1 ⩽ n ⩽ 10^18 | ||
*2 | *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 | |||
Line 50: | Line 48: | ||
def main(): | def main(): | ||
# Citirea datelor de intrare din fișier | # Citirea datelor de intrare din fișier | ||
with open(" | 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(" | 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.