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
2283 - Caraghios
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!
Se consideră un șir S de cifre nenule. O secvență a șirului S este o succesiune de cifre din S care apar pe poziții consecutive. Un număr n asociat unei secvențe din S este numărul în baza 10 care se formează cu toate cifrele din secvența respectivă, în ordinea în care apar în aceasta. Un număr n se numește caraghios dacă este egal cu pătratul sumei cifrelor lui n. ==Cerința== Dându-se un șir S de cifre nenule, să se determine câte dintre secvențele din S au numere asociate caraghioase. ==Date de intrare== Fișierul de intrare caraghios.in conține pe prima linie șirul S de cifre nenule. ==Date de ieșire== Fișierul de ieșire caraghios.out va conține pe prima linie numărul de secvențe din S care au asociate numere caraghioase. În acest caz, în consolă se va afișa un mesaj de validare a datelor "Input valid!". În caz contrar pe consolă se va afișa "Input invalid! Numărul de cifre trebuie să fie mai mic sau egal cu 1.000.000." ==Restricții și precizări== * Șirul S va conține maxim 1.000.000 de cifre ==Exemplu== ; caraghios.in : 28113 ; caraghios.out : 3 ; Consolă : Input valid! ==Explicație exemplu== Toate secvențele lui S sunt: 2, 28, 281, 2811, 28113, 8, 81, 811, 8113, 1, 11, 113, 1, 13, 3 Există 3 secvențe care au asociate numere caraghioase: 81, 1, 1 : 81 = (8+1)*(8+1), 1 = 1*1, 1 = 1*1 ==Rezolvare== <syntaxhighlight lang="python"> def validate_input(input_str): """ Verifică dacă input-ul are maxim 1.000.000 de cifre. :param input_str: șirul de caractere de verificat :return: True dacă input-ul este valid, False în caz contrar """ return len(input_str) <= 1000000 def count_caraghios(input_str): """ Calculează numărul de apariții a cifrei 1 într-un șir dat. :param input_str: șirul de caractere de analizat :return: numărul de apariții a cifrei 1, conform cerințelor specifice """ nr = 0 x = input_str[0] if x == '1': nr += 1 for y in input_str[1:]: if y == '1': nr += 1 if x == '8': nr += 1 x = y return nr if __name__ == "__main__": input_file = "caraghios.in" output_file = "caraghios.out" with open(input_file, "r") as f: input_str = f.read().strip() if not validate_input(input_str): print("Input invalid! Numărul de cifre trebuie să fie mai mic sau egal cu 1.000.000.") return else: print("Input valid!") nr = count_caraghios(input_str) with open(output_file, "w") as f: f.write(str(nr)) </syntaxhighlight> ==Explicație cod== În cadrul programului, se utilizează două funcții: Funcția validate_input primește un șir de caractere input_str și returnează True dacă șirul are cel mult 1.000.000 de caractere. Funcția count_caraghios primește un șir de caractere input_str și calculează numărul de apariții a cifrei 1 în șir, respectând condiția specifică legată de cifra 8. În cadrul blocului main se deschide fișierul de intrare caraghios.in, se citește conținutul său într-un șir de caractere și se validează input-ul folosind funcția validate_input. Dacă input-ul este invalid, se afișează un mesaj corespunzător și programul se încheie. În caz contrar, se calculează numărul de apariții a cifrei 1 folosind funcția count_caraghios, iar rezultatul este scris în fișierul de ieșire caraghios.out.
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