3333 - bookface: Difference between revisions
No edit summary |
Nagy Lenard (talk | contribs) No edit summary |
||
Line 43: | Line 43: | ||
#3333 - bookface | #3333 - bookface | ||
def bookface(vector | def bookface(vector): | ||
f = open("bookface.out", "w") | f = open("bookface.out", "w") | ||
for a in vector: | for a in vector: | ||
Line 73: | Line 73: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
vector , n = conform_restrictiilor() | vector , n = conform_restrictiilor() | ||
bookface(vector | bookface(vector) | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 15:19, 8 April 2023
Sursa: - bookface
Cerinţa[edit | edit source]
Se dau n numere naturale nenule. Pentru fiecare număr dat a să se calculeze suma divizorilor lui a^2.
Date de intrare[edit | edit source]
Fișierul de intrare bookface.in conține pe prima linie numărul n, iar pe a doua linie cele n numere naturale.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi in fișierul de ieșire bookface.out va conține pe linia i suma cerută pentru cel de-al i-lea număr. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 50.000
- cele n numere date sunt nenule, mai mici decât 1.000.000
Exemple[edit | edit source]
Exemplul 1[edit | edit source]
- bookface.in
- 3
- 2 4 3
- Ieșire
- Datele sunt corecte.
- bookface.out
- 7
- 31
- 13
Exemplul 2[edit | edit source]
- bookface.in
- 2
- 5 3
- Ieșire
- Datele sunt corecte.
- bookface.out
- 31
- 13
Exemplul 3[edit | edit source]
- bookface.in
- 2
- 314441 41241241
- Ieșire
- Datele nu sunt comform restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3333 - bookface
def bookface(vector):
f = open("bookface.out", "w") for a in vector: patrat = a ** 2 s_divizori = 0 for i in range(1, int(patrat**0.5) + 1): if patrat % i == 0: s_divizori += i if i != patrat // i: s_divizori += patrat // i f.write(str(s_divizori) + "\n")
def conform_restrictiilor():
with open("bookface.in", "r") as f: n = int(f.readline().strip()) vector = list(map(int, f.readline().strip().split())) if n < 1 or n > 50000: print("Datele nu sunt comform restricțiilor impuse.") exit() for a in vector: if a > 1000000: print("Datele nu sunt comform restricțiilor impuse.") exit() print("Datele sunt corecte.") return vector , n
if __name__ == '__main__':
vector , n = conform_restrictiilor() bookface(vector)
</syntaxhighlight>
Explicaţie cod[edit | edit source]
Funcția conform_restrictiilor citește datele de intrare din fișierul "bookface.in", verifică dacă acestea respectă restricțiile impuse (n trebuie să fie între 1 și 50000, iar numerele date trebuie să fie mai mici decât 1000000), și returnează lista vector cu numerele date și valoarea n.
Funcția bookface primește lista vector și valoarea n returnate de funcția conform_restrictiilor. Pentru fiecare număr a din lista, calculează suma divizorilor lui a la pătrat. Rezultatele sunt apoi scrise în fișierul "bookface.out".
În programul principal, se apelează funcția conform_restrictiilor pentru a obține datele de intrare verificate și apoi se apelează funcția bookface pentru a calcula și scrie rezultatele în fișierul de ieșire.