1002 - Paginare: Difference between revisions

From Bitnami MediaWiki
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">
def validare(n):
VOLUME = 792
    return n.isdigit() and 1 <= int(n) <= 100000


def paginare(n):
def validate_input(n):
     max_pagini = 10**n - 1
     if not n.isdigit():
        return False
    n = int(n)
    return n > 0 and n <= 1_000_000_000


     if max_pagini < 300:
 
def paginate(n):
     if n < VOLUME:
         print("IMPOSIBIL")
         print("IMPOSIBIL")
        return
    if n % VOLUME != 0:
        temp = n // VOLUME + 1
     else:
     else:
         V = max_pagini // 300
         temp = n // VOLUME
        P = max_pagini % 300
    if P == 0:
        P = 300


     print("Numarul de volume este:", V)
     result = n % VOLUME
    print("Numarul de pagini ale ultimului volum este:", P)


    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 __name__ == '__main__':
    print(temp, end=' ')
    if n % VOLUME == 0:
        print(300)
    else:
        print(pages)


    n = int(input("Introduceti numarul de cifre: "))
if validare(n):
    n = int(n)
    print("Datele introduse corespund restricțiilor impuse.")
    paginare(n)
else:
    print("Datele introduse nu corespund restricțiilor impuse.")


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>