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
2111 - Centrale
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!
Sursa: [https://www.pbinfo.ro/probleme/2111/centrale] ---- == Enunt == Cristina şi Alina sunt eleve în clasa a V-a şi sunt foarte bune prietene. Le place ca în pauze să se provoace reciproc cu câte o problemă. De data aceasta, e rândul Cristinei să propună o problemă Alinei. Ea îi cere ca dintr-un set de mai multe numere naturale să le găsească pe cele centrale. Bineînţeles că mai întâi îi explică prietenei sale ce este un număr central: un număr care are proprietatea ca, după eliminarea primei şi a ultimei cifre, se obţine un nou număr care conţine numai cifre egale între ele. De exemplu, numărul 67771 este număr central pentru că, eliminând prima şi ultima cifră, se obţine numărul 777 care are toate cifrele egale între ele. Alina, care între timp a învăţat să programeze, intră imediat în jocul Cristinei, ştiind că va afla imediat rezultatul corect la problema propusă de prietena ei. == Cerinţa == Având la dispoziţie un set de numere pe care le primeşte pentru verificare, Alina trebuie să spună câte dintre acestea sunt numere centrale. == Date de intrare == Fişierul de intrare centrale.in conţine pe prima linie numărul de numere ce trebuie verificate. Pe următoarea linie se găsesc acel numar de numere naturale, separate prin câte un spaţiu. == Date de ieșire == Fişierul de ieşire centrale.out va conţine o singură linie pe care va fi scris numărul de numere centrale găsite între numerele ce trebuie verificate. == Restricţii şi precizări == * 1 ≤ nr_de_numere ≤ 100 * Fiecare număr din setul dat are cel puţin 3 cifre şi cel mult 9 cifre == Exemplu == ; centrale.in : 5 : 81318 71117 2258 933 21110 ; centrale.out : 3 == Explicație == Dintre cele 5 numere din setul dat, sunt 3 numere centrale: 71117, 933 şi 21110. == Rezolvare == === Rezolvare ver. 1 === <syntaxhighlight lang="python" line> def este_numar_central(nr_de_numere): cifre = str(nr_de_numere)[1:-1] return all(c == cifre[0] for c in cifre) def validare_date_intrare(nr_de_numere, numere): if nr_de_numere < 1 or nr_de_numere > 100: return False for numar in numere: if numar <= 0 or numar > 10**9: return False return True def numara_numere_centrale(numere): return sum(este_numar_central(x) for x in numere) def scrie_date_iesire(numere_centrale): with open('centrale.out', 'w') as f: f.write(str(numere_centrale) + '\n') if __name__ == "__main__": with open('centrale.in', 'r') as f: nr_de_numere = int(f.readline().strip()) numere = list(map(int, f.readline().strip().split())) if not validare_date_intrare(nr_de_numere, numere): print("Eroare: Datele introduse nu sunt valide!") exit() numere_centrale = numara_numere_centrale(numere) scrie_date_iesire(numere_centrale) </syntaxhighlight> === Rezolvare ver. 2 === <syntaxhighlight lang="python" line> def este_numar_central(nr_de_numere): cifre = str(nr_de_numere)[1:-1] return all(c == cifre[0] for c in cifre) def validare_pozitivitate(numere): return all(numar > 0 for numar in numere) if __name__ == "__main__": with open('centrale.in', 'r') as f: nr_de_numere = int(f.readline().strip()) numere = list(map(int, f.readline().strip().split())) if nr_de_numere != len(numere): print("Eroare: Numărul de numere nu corespunde cu N!") exit(1) if not validare_pozitivitate(numere): print("Eroare: Numerele introduse nu sunt strict pozitive!") exit(1) numere_centrale = sum(este_numar_central(x) for x in numere) with open('centrale.out', 'w') as f: f.write(str(numere_centrale) + '\n') print("Datele introduse sunt corecte.") </syntaxhighlight>
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