2001 - Huge Control
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.
Restricții și precizări
N este un număr cu proprietăți caracteristice tipului Huge.
Exemplu
Intrare
713
Ieșire
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
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".