1002 - Paginare
Cerință
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
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran numerele V P, separate prin exact un spaţiu, sau mesajul IMPOSIBIL.
Restricții de precizări
- 1 ⩽ n ⩽ 1000000000
- numărătoarea paginilor începe de la 1
Exemplu
Exemplul 1
- Intrare
- 999
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 2
- 105
Exemplul 2
- Intrare
- 900
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- IMPOSIBIL
Rezolvare
Rezolvarea ver. 1
<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):
if n < VOLUME: print("IMPOSIBIL") return if n % VOLUME != 0: temp = n // VOLUME + 1 else: temp = n // VOLUME
result = n % VOLUME
if result < 10: pages = result else: pages = 9 result -= 9 if result < 181: if result % 2 == 0: pages += result // 2 else: print("IMPOSIBIL") return else: pages = 99 result -= 180 if result % 3 == 0: pages += result // 3 else: print("IMPOSIBIL") return
print(temp, end=' ') if n % VOLUME == 0: 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>