Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
2001 - Huge Control
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Cerința== 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. Î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 ("Input valid" sau "Input invalid" după caz). ==Restricții și precizări== N este un număr cu proprietăți caracteristice tipului Huge. ==Exemplu== ; Intrare : 713 ; Ieșire : Input valid : 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 if __name__ == "__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("Input invalid") return else: print("Input valid") control_digit = compute_control_digit(n) fout.write(str(control_digit)) </syntaxhighlight> ==Explicație cod== Aceste funcții aparțin unui program care primește un număr mare și verifică dacă este valid, apoi calculează și scrie într-un fișier cifra de control a numărului dat. `is_valid_number(n)` este o funcție care primește un șir de caractere `n` și returnează `True` dacă șirul este format din cifre și are lungimea mai mică sau egală cu un milion, altfel returnează `False`. Această funcție este utilizată pentru a verifica dacă numărul de intrare este valid. `compute_control_digit(n)` este o funcție care primește un șir de caractere `n` și calculează cifra de control a numărului dat. Algoritmul pentru a calcula cifra de control este următorul: # Se pornește cu valoarea 0 pentru variabila `nr`. # Se parcurge fiecare caracter din șirul de intrare `n`. # Pentru fiecare caracter, se multiplică `nr` cu 10 și se adaugă valoarea numerică a caracterului. # Se face modulo 9 pentru a reduce `nr` la un număr între 0 și 8. # Când toți caracterele sunt procesate, se returnează 9 dacă `nr` este egal cu 0, altfel se returnează valoarea din `nr`. În codul principal, `__name__ == "__main__"` asigură faptul că blocul de cod din interiorul lui este executat numai atunci când fișierul este rulat ca un script și nu ca modul importat. În interiorul blocului principal, fișierul "hugecontrol.in" este deschis și citit, iar primul rând este citit ca șirul de intrare `n`. Apoi, se verifică dacă numărul este valid folosind `is_valid_number(n)`. Dacă numărul nu este valid, se afișează mesajul "Input invalid" și programul se termină. Altfel, se afișează mesajul "Input valid" și se calculează cifra de control folosind `compute_control_digit(n)`. Această cifră de control este scrisă în fișierul "hugecontrol.out" folosind `fout.write(str(control_digit))`.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width