2001 - Huge Control: Difference between revisions
Pagină nouă: Cifra de control a unui număr se obţine efectuând suma cifrelor sale, apoi suma cifrelor acestei sume etc. până se obţine o sumă formată dintr-o singură cifră. De exemplu, cifra de control a numărului 713 este 2. (7 + 1 + 3 = 11, 1 + 1 = 2). Un număr de tip Huge este un număr natural de maxim 1.000.000 de cifre. ==Cerința== În fișierul hugecontrol.in se găsește memorat un număr N, de tip Huge. Calculati și afișati cifra de control a numărului. ==Date... |
No edit summary |
||
Line 10: | Line 10: | ||
==Date de ieșire== | ==Date de ieșire== | ||
Programul va afișa în fișierul de ieșire hugecontrol.out numărul digit, reprezentând cifra de control a lui N. | Programul va afișa în fișierul de ieșire hugecontrol.out numărul digit, reprezentând cifra de control a lui N, alături de un mesaj de validare a datelor introduse. | ||
==Restricții și precizări== | ==Restricții și precizări== | ||
N este un număr cu proprietăți caracteristice tipului Huge. | N este un număr cu proprietăți caracteristice tipului Huge. | ||
==Exemplu== | ==Exemplu== | ||
Intrare | ; Intrare | ||
: 713 | |||
; Ieșire | |||
Ieșire | : Valid input | ||
: 2 | |||
==Explicație== | ==Explicație== | ||
7 + 1 + 3 = 11, 1 + 1 = 2 | 7 + 1 + 3 = 11, 1 + 1 = 2 | ||
Line 47: | Line 46: | ||
print("Invalid input") | print("Invalid input") | ||
return | return | ||
else: | |||
print("Valid input") | |||
control_digit = compute_control_digit(n) | control_digit = compute_control_digit(n) |
Revision as of 07:49, 28 April 2023
Cifra de control a unui număr se obţine efectuând suma cifrelor sale, apoi suma cifrelor acestei sume etc. până se obţine o sumă formată dintr-o singură cifră. De exemplu, cifra de control a numărului 713 este 2. (7 + 1 + 3 = 11, 1 + 1 = 2).
Un număr de tip Huge este un număr natural de maxim 1.000.000 de cifre.
Cerința
În fișierul hugecontrol.in se găsește memorat un număr N, de tip Huge. Calculati și afișati cifra de control a numărului.
Date de intrare
Programul citește din fișierul de intrare hugecontrol.in numărul N, de tip Huge.
Date de ieșire
Programul va afișa în fișierul de ieșire hugecontrol.out numărul digit, reprezentând cifra de control a lui N, alături de un mesaj de validare a datelor introduse.
Restricții și precizări
N este un număr cu proprietăți caracteristice tipului Huge.
Exemplu
- Intrare
- 713
- Ieșire
- Valid input
- 2
Explicație
7 + 1 + 3 = 11, 1 + 1 = 2
Rezolvare
<syntaxhighlight lang="python"> def is_valid_number(n):
return n.isdigit() and len(n) <= 1000000
def compute_control_digit(n):
nr = 0
for c in n: nr = nr * 10 + int(c) nr %= 9
return 9 if nr == 0 else nr
def main():
with open("hugecontrol.in", "r") as fin, open("hugecontrol.out", "w") as fout: n = fin.readline().strip()
if not is_valid_number(n): print("Invalid input") return else: print("Valid input")
control_digit = compute_control_digit(n) fout.write(str(control_digit))
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicație cod
Acest cod verifica daca un numar primit ca input este valid si apoi calculeaza cifra de control a numarului respectiv. Mai exact, functia "is_valid_number" returneaza True daca numarul este format doar din cifre si are lungimea mai mica sau egala cu un milion, iar functia "compute_control_digit" calculeaza cifra de control a numarului folosind o formula matematica specifica. Functia "main" citeste input-ul din fisierul "hugecontrol.in", verifica daca numarul este valid folosind functia "is_valid_number", calculeaza cifra de control folosind functia "compute_control_digit" si scrie rezultatul in fisierul "hugecontrol.out".