1002 - Paginare: Difference between revisions
Vardai Erwin (talk | contribs) |
Vardai Erwin (talk | contribs) |
||
Line 16: | Line 16: | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: 2 | : 2 105 | ||
=== Exemplul 2 === | === Exemplul 2 === | ||
; Intrare | ; Intrare |
Latest revision as of 18:32, 22 April 2023
Cerință[edit | edit source]
Pentru numerotarea paginilor unei serii enciclopedice formate din unul sau mai multe volume se presupune că se folosesc n cifre. Fiecare volum are 300 de pagini, eventual cu excepţia ultimului volum care ar putea avea mai puţine. Pentru n dat, să se determine numărul de volume din serie V şi numărul de pagini P ale ultimului volum. Dacă nu este posibilă numerotarea paginilor folosind n cifre, se va afişa mesajul IMPOSIBIL.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran numerele V P, separate prin exact un spaţiu, sau mesajul IMPOSIBIL. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții de precizări[edit | edit source]
- 1 ⩽ n ⩽ 1000000000
- numărătoarea paginilor începe de la 1
Exemplu[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- 999
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2 105
Exemplul 2[edit | edit source]
- Intrare
- 900
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- IMPOSIBIL
Rezolvare[edit | edit source]
Rezolvarea ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> VOLUME = 792
def validate_input(n):
if not n.isdigit(): return False n = int(n) return n > 0 and n <= 1_000_000_000
def paginate(n): #verificăm numărul de pagini
if n < VOLUME: #dacă numărul introdusneste mai mic ca și VOLUME, se afișează IMPOSIBIL print("IMPOSIBIL") return if n % VOLUME != 0: #aflăm numărul de pagini din VOLUME temp = n // VOLUME + 1 #stocăm valoare nr de pagini else: temp = n // VOLUME
result = n % VOLUME
- calculăm nr de pagini din ultimul volum
if result < 10: #dacă nr de pagini este mai mic decat 10, atunci nr de pagini este 9 pages = result else: pages = 9 result -= 9 if result < 181: #dacă nr de pagini este mai mare ca și 181, atunci nr de pagini este formt din 3 numere
- dacă nr total de pagini nu este divizibil cu 2, nu se pot numerota paginile
if result % 2 == 0: pages += result // 2 else: print("IMPOSIBIL") return
- dacă nr total de pagini nu este divizibil cu 3, nu se pot numerota paginile
else: pages = 99 result -= 180 if result % 3 == 0: pages += result // 3 else: print("IMPOSIBIL") return
- afișăm nr total de volume din serie
print(temp, end=' ') if n % VOLUME == 0: #dacă există un nr întreg, atunci ultimul volum are 300 de pagini, altfel se va afișa nr de pagini print(300) else: print(pages)
if __name__ == '__main__':
n = input("Introduceti numarul de cifre: ") if validate_input(n): n = int(n) print("Datele introduse corespund restricțiilor impuse.") paginate(n) else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>