2001 - Huge Control: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
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...
 
Cata (talk | contribs)
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
713
; Ieșire
Ieșire
: Valid input
 
: 2
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".