1284 - Carte 1: Difference between revisions

From Bitnami MediaWiki
Sinn Erich (talk | contribs)
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar prog...
 
Sinn Erich (talk | contribs)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
== Cerinţa ==
== Cerinţa ==
Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule.
Pentru a se numerota paginile unei cărți s-au folosit '''n''' cifre. Câte pagini are cartea?
 
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieșire ==  
== Date de ieșire ==  
Programul va afișa pe ecran,  mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."
 
Programul afișează pe ecran numărul '''p''', reprezentând numărul de pagini ale carții.
 
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cate pagini are cartea.
 
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."


== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 0 < '''n''' ⩽ 10
1 ≤ '''n''' ≤ 1.000.000
 
pentru fiecare test exista soluție.
 
numerotarea paginilor se face de la 1.


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Datele de intrare:
: 4
: Introduceti numarul de cifre folosite pentru numerotarea paginilor:  
; Ieșire
: 1791
: Datele corespund cerințelor.
; Datele de ieșire:
: 576
: Datele sunt introduse corect.
<br>
: Numarul de pagini al cartii este:
 
: 633
== Exemplul 2 ==
; Intrare
: 16
; Ieșire
: Datele introduse nu corespund cerințelor.
<br>
== Exemplul 3 ==
; Intrare
: 7
; Ieșire
: Datele corespund cerințelor.
: 25401600
<br>
<br>


== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4273
#1284
def patrate_perfecte(n):
def validate_input(n):
     patrate = []
     if not isinstance(n, int):
    i = 1
        print("Datele nu corespund restricțiilor impuse.")
     while len(patrate) < n:
        return False
         patrat = i * i
     elif n < 1:
        patrate.append(patrat)
         print("Datele nu corespund restricțiilor impuse.")
         i += 1
         return False
     return patrate
     else:
        return True
 


def calculate_pages(n):
    pagini = 0
    cifre = 0


def calculeaza(numbers):
    while cifre <= n:
    product = 1
        pagini += 1
    for number in numbers:
         cifre += len(str(pagini))
         product *= number
    return product


    return pagini-1


def validare_numar(n):
 
     if n < 1 or n > 10:
def display_pages(total_pages):
        return False
     print("Numarul de pagini al cartii este:", total_pages)
    return True




if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input("Introduceți numărul n: "))
     while True:
    if not validare_numar(n):
        try:
        print("Datele introduse nu corespund cerintelor.")
            n = int(input("Introduceti numarul de cifre folosite pentru numerotarea paginilor: "))
    else:
            if n < 1:
        squares = patrate_perfecte(n)
                print("Datele nu corespund restricțiilor impuse.")
        product = calculeaza(squares)
            else:
        print("Datele introduse corespund cerintelor.")
                if not validate_input(n):
         print(product)
                    exit()
 
                total_pages = calculate_pages(n)
                if total_pages < 1:
                    print("Datele nu corespund restricțiilor impuse.")
                else:
                    print("Datele sunt introduse corect.")
                    display_pages(total_pages)
 
                break
         except ValueError:
            print("Datele nu corespund restricțiilor impuse.")
 




</syntaxhighlight>
</syntaxhighlight>
'''Explicatie cod:'''
Acest cod implementează un program care calculează numărul total de pagini al unei cărți, în funcție de numărul de cifre folosite pentru numerotarea paginilor.
Funcția `validate_input(n)` verifică dacă datele de intrare sunt valide, respectiv dacă numărul introdus este un întreg și este mai mare decât zero. Dacă datele nu sunt valide, se afișează un mesaj de eroare și se returnează `False`, altfel se returnează `True`.
Funcția `calculate_pages(n)` calculează numărul total de pagini al cărții în funcție de numărul de cifre folosite pentru numerotarea paginilor. Algoritmul folosit este să se calculeze numărul de cifre necesare pentru a numerota fiecare pagină până la ultima pagină, astfel încât atunci când numărul de cifre necesare depășește numărul de cifre date, se știe că s-au numerotat toate paginile.
Funcția `display_pages(total_pages)` afișează numărul total de pagini al cărții.
În `if __name__ == '__main__':` se pornește programul. Programul citeste numărul de cifre folosite pentru numerotarea paginilor și verifică dacă datele sunt valide folosind funcția `validate_input(n)`. Dacă datele sunt valide, se calculează numărul total de pagini folosind funcția `calculate_pages(n)`. Dacă numărul total de pagini este mai mic decât 1, se afișează un mesaj de eroare, altfel se afișează un mesaj de confirmare și numărul total de pagini al cărții folosind funcția `display_pages(total_pages)`.

Latest revision as of 08:29, 29 April 2023

Sursa: [1]

Cerinţa[edit | edit source]

Pentru a se numerota paginile unei cărți s-au folosit n cifre. Câte pagini are cartea?

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Programul afișează pe ecran numărul p, reprezentând numărul de pagini ale carții.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cate pagini are cartea.

În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

Restricţii şi precizări[edit | edit source]

1 ≤ n ≤ 1.000.000

pentru fiecare test exista soluție.

numerotarea paginilor se face de la 1.

Exemplul 1[edit | edit source]

Datele de intrare
Introduceti numarul de cifre folosite pentru numerotarea paginilor:
1791
Datele de ieșire
Datele sunt introduse corect.
Numarul de pagini al cartii este:
633


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 1284

def validate_input(n):

   if not isinstance(n, int):
       print("Datele nu corespund restricțiilor impuse.")
       return False
   elif n < 1:
       print("Datele nu corespund restricțiilor impuse.")
       return False
   else:
       return True


def calculate_pages(n):

   pagini = 0
   cifre = 0
   while cifre <= n:
       pagini += 1
       cifre += len(str(pagini))
   return pagini-1


def display_pages(total_pages):

   print("Numarul de pagini al cartii este:", total_pages)


if __name__ == '__main__':

   while True:
       try:
           n = int(input("Introduceti numarul de cifre folosite pentru numerotarea paginilor: "))
           if n < 1:
               print("Datele nu corespund restricțiilor impuse.")
           else:
               if not validate_input(n):
                   exit()
               total_pages = calculate_pages(n)
               if total_pages < 1:
                   print("Datele nu corespund restricțiilor impuse.")
               else:
                   print("Datele sunt introduse corect.")
                   display_pages(total_pages)
               break
       except ValueError:
           print("Datele nu corespund restricțiilor impuse.")


</syntaxhighlight> Explicatie cod:

Acest cod implementează un program care calculează numărul total de pagini al unei cărți, în funcție de numărul de cifre folosite pentru numerotarea paginilor.

Funcția `validate_input(n)` verifică dacă datele de intrare sunt valide, respectiv dacă numărul introdus este un întreg și este mai mare decât zero. Dacă datele nu sunt valide, se afișează un mesaj de eroare și se returnează `False`, altfel se returnează `True`.

Funcția `calculate_pages(n)` calculează numărul total de pagini al cărții în funcție de numărul de cifre folosite pentru numerotarea paginilor. Algoritmul folosit este să se calculeze numărul de cifre necesare pentru a numerota fiecare pagină până la ultima pagină, astfel încât atunci când numărul de cifre necesare depășește numărul de cifre date, se știe că s-au numerotat toate paginile.

Funcția `display_pages(total_pages)` afișează numărul total de pagini al cărții.

În `if __name__ == '__main__':` se pornește programul. Programul citeste numărul de cifre folosite pentru numerotarea paginilor și verifică dacă datele sunt valide folosind funcția `validate_input(n)`. Dacă datele sunt valide, se calculează numărul total de pagini folosind funcția `calculate_pages(n)`. Dacă numărul total de pagini este mai mic decât 1, se afișează un mesaj de eroare, altfel se afișează un mesaj de confirmare și numărul total de pagini al cărții folosind funcția `display_pages(total_pages)`.