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
3769 - Iepuras 2
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/3769/iepuras2] ==Enunt== Pentru că îi plac cifrele, Skippie, iepurașul norocos, a stabilit cum se obține cifra de control a unui număr: se efectuează suma cifrelor sale, apoi suma cifrelor acestei sume, până când suma obținută este un număr format dintr-o singură cifră. Această ultimă cifră, spune Skippie, poartă numele de cifră de control. Skippie a ascuns în păadure n ouă roșii. Pe fiecare ou a pictat câte un număr natural nenul. Iar acum se întreabă care este suma dintre cel mai mare și cel mai mic număr natural care se pot forma din toate cifrele distincte folosite în scrierea numărului pictat. În plus, pentru că lui Skippie îi plac problemele complicate, pentru fiecare număr pictat pe câte un ou el ar vrea să afle și de câte ori apare cifra de control a numărului în scrierea tuturor numerelor naturale mai mici sau egale decât numărul pictat. ==Cerința== 1. Pentru fiecare dintre cele n numere pictate de Skippie aflați suma dintre cel mai mare și cel mai mic număr natural care se pot forma din toate cifrele distincte folosite în scrierea numărului pictat. 2. Pentru fiecare dintre cele n numere pictate de Skippie aflați de câte ori apare cifra de control a numărului pictat în scrierea tuturor numerelor naturale mai mici sau egale decât numărul pictat. ==Date de intrare== Fișierul de intrare iepuras.in conține un număr natural C. Acesta poate avea valorile 1 sau 2 și reprezintă cerința problemei. Cea de-a doua linie a fișierului de intrare conține un număr natural n reprezentând numărul de ouă roșii pictate de Skippie. Fiecare dintre următoarele n linii ale fișierului de intrare conține câte un număr natural nenul reprezentând numerele pictate de iepuras, pe cele n ouă roșii. ==Date de ieșire== Fișierul de ieșire iepuras.out va conține n numere întregi, fiecare pe o linie separată. În ordinea apariției numerelor pictate de iepuras în fișierul de intrare, se afișează răspunsurile la cerința C. ==Restricții și precizări== 1 ≤ C ≤ 2 1 ≤ n ≤ 100.000 numerele pictate de iepuraș sunt mai mici sau egale cu 1018 ==Exemplul 1:== iepuras.in 1 2 121 33343 iepuras.out 33 77 ==Explicație== Se rezolvă cerința 1. Sunt 2 ouă pictate (n = 2). Pentru primul ou, pictat cu numărul 121: - cel mai mare număr natural cu cifre distincte format cu toate cifrele distincte ale numărului pictat este 21; - cel mai mic număr natural cu cifre distincte format cu toate cifrele distincte ale numărului pictat este 12. Deci suma celor două numere este 33 (21 + 12 = 33). Pentru al doilea ou, pictat cu numărul 33343: - cel mai mare număr natural cu cifre distincte format cu toate cifrele distincte ale numărului pictat este 43; - cel mai mic număr natural cu cifre distincte format cu toate cifrele distincte ale numărului pictat este 34. Deci suma celor două numere este 77 (43 + 34 = 77). ==Exemplul 2:== iepuras.in 2 2 123 191 iepuras.out 22 39 ==Explicație== Se rezolvă cerința 2. Sunt 2 ouă pictate (n = 2). Pe primul ou este scris numărul 123 iar pe al doilea ou numărul 191. Cifra de control a numărului 123 este 6 (1 + 2 + 3 = 6). Numărul de apariții aale cifrei 6 în scrierea a tuturor numerelor naturale mai mici sau egale cu 123 este 22. Cifra 6 apare în scrierea numerelor: 6, 16, 26, 36, 46, 56, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 76, 86, 96, 106, 116 de 22 de ori. Cifra de control a numărului 191 este 2. (1 + 9 + 1 = 11, 1 + 1 = 2). Numărul de apariții ale cifrei 2 în scrierea tuturor numerelor naturale mai mici sau egale cu 19 este 39. Cifra 2 apare în scrierea numerelor 2, 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 42, 52, 62, 72, 82, 92, 102, 112, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 142, 152, 162, 172, 182 de 39 de ori. ==Încărcare soluție== <syntaxhighlight lang="python" line> def cifra_de_control(n): while n >= 10: s = 0 while n: s += n % 10 n //= 10 n = s return n def cel_mai_mic_si_cel_mai_mare_numar(cifre): cifre.sort() return numar(cifre), numar(cifre[::-1]) with open('iepuras.in') as fin, open('iepuras.out', 'w') as fout: cerinta = int(fin.readline()) n = int(fin.readline()) numere = [int(fin.readline()) for _ in range(n)] for nr in numere: cifre = [int(c) for c in str(nr)] if cerinta == 1: min_numar, max_numar = cel_mai_mic_si_cel_mai_mare_numar(cifre) fout.write(str(min_numar + max_numar) + '\n') else: cifra_control = cifra_de_control(nr) aparitii = 0 for i in range(1, nr+1): if cifra_de_control(i) == cifra_control: aparitii += 1 fout.write(str(aparitii) + '\n') </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