1002 - Paginare: Difference between revisions
Vardai Erwin (talk | contribs) |
Vardai Erwin (talk | contribs) |
||
Line 23: | Line 23: | ||
: IMPOSIBIL | : IMPOSIBIL | ||
== Rezolvarea ver. 1 == | == Rezolvare == | ||
=== Rezolvarea ver. 1 === | |||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
VOLUME = 792 | |||
def | def validate_input(n): | ||
if not n.isdigit(): | |||
return False | |||
n = int(n) | |||
return n > 0 and n <= 1_000_000_000 | |||
if | |||
def paginate(n): | |||
if n < VOLUME: | |||
print("IMPOSIBIL") | print("IMPOSIBIL") | ||
return | |||
if n % VOLUME != 0: | |||
temp = n // VOLUME + 1 | |||
else: | 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 | |||
if | 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> | </syntaxhighlight> |
Revision as of 14:27, 19 March 2023
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
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>