1907 - Numar Minim: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Georgiana, pregătindu-se de olimpiada locală de matematică, a primit de la doamna profesoară următoarea problemă: Dându-se numerele '''n''' şi '''k''', să se afle cel mai mic număr de '''n''' cifre, cu restul împărţirii la '''9''' egal cu '''k'''. Dacă o ajutaţi, ea va primi nota '''10''' iar voi veţi primi '''100''' de puncte. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi numărul '''k''' == Date de ieşir...
 
No edit summary
 
(One intermediate revision by one other user not shown)
Line 4: Line 4:
Programul citește de la tastatură numărul '''n''', iar apoi numărul '''k'''
Programul citește de la tastatură numărul '''n''', iar apoi numărul '''k'''
== Date de ieşire ==
== Date de ieşire ==
Programul va afișa pe ecran numărul cerut.
Dacă datele sunt introduse corect,pe ecran se va afișa :'''"Datele sunt introduse corect."''',apoi pe un rând nou numărul cerut.În cazul contrar,se va afișa pe ecran '''"Datele nu corespund restricțiilor impuse."'''.
== Restricții și precizări ==
== Restricții și precizări ==
* 0 ⩽ k ⩽ 8
* 0 ⩽ k ⩽ 8
Line 10: Line 10:
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 2 1
: 2  
: 1
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele sunt introduse corect.
: 10
: 10
== Explicație ==  
== Explicație ==  
'''10''' este cel mai mic număr de '''2''' cifre care da restul '''1''' la împărţirea cu '''9'''.
'''10''' este cel mai mic număr de '''2''' cifre care da restul '''1''' la împărţirea cu '''9'''.
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# Definim o funcție care validează dacă numărul introdus pentru n este un număr între 0 și 1.000.000
def validare_date_numar(n):
def validare_date_numar(n):
     flag = False
     flag = False
Line 25: Line 28:
     return flag
     return flag


# Definim o funcție care validează dacă numărul introdus pentru k este un  număr între 0 și 8
def validare_date(k):
def validare_date(k):
     flag = False
     flag = False
Line 32: Line 36:
     return flag
     return flag


# Definim o funcție care va returna cel mai mic număr cu n cifre, având restul împărțirii la 9 egal cu k
def print_num(n, k):
def print_num(n, k):
     numar = ''
     numar = ''
Line 54: Line 59:
     return numar
     return numar


# Verificăm dacă numerele introduse sunt valide, iar dacă sunt, afișăm cel mai mic număr cu n cifre, având restul împărțirii la 9 egal cu k
if __name__ == '__main__':
if __name__ == '__main__':
   n = input()
   n = input()
   k = input()
   k = input()
   if validare_date_numar(n) and validare_date(k):
   if validare_date_numar(n) and validare_date(k):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       print("\nDatele sunt introduse corect.\n")
       numar = print_num(n, int(k))
       numar = print_num(n, int(k))
       print(numar)
       print(numar)
   else:
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 16:20, 11 April 2023

Cerinţa[edit | edit source]

Georgiana, pregătindu-se de olimpiada locală de matematică, a primit de la doamna profesoară următoarea problemă: Dându-se numerele n şi k, să se afle cel mai mic număr de n cifre, cu restul împărţirii la 9 egal cu k. Dacă o ajutaţi, ea va primi nota 10 iar voi veţi primi 100 de puncte.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi numărul k

Date de ieşire[edit | edit source]

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numărul cerut.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".

Restricții și precizări[edit | edit source]

  • 0 ⩽ k ⩽ 8
  • 1 ⩽ n ⩽ 1.000.000

Exemplu[edit | edit source]

Intrare
2
1
Ieșire
Datele sunt introduse corect.
10

Explicație[edit | edit source]

10 este cel mai mic număr de 2 cifre care da restul 1 la împărţirea cu 9.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Definim o funcție care validează dacă numărul introdus pentru n este un număr între 0 și 1.000.000

def validare_date_numar(n):

   flag = False
   if n.isdigit():
       if 0 <= int(n) <= 1_000_000:
           flag = True
   return flag
  1. Definim o funcție care validează dacă numărul introdus pentru k este un număr între 0 și 8

def validare_date(k):

   flag = False
   if k.isdigit():
       if 0 <= int(k) <= 8:
           flag = True
   return flag
  1. Definim o funcție care va returna cel mai mic număr cu n cifre, având restul împărțirii la 9 egal cu k

def print_num(n, k):

   numar = 
   if k == 0:
       numar = "1" + "0" * (int(n) - 2) + "8"
   elif k == 1:
       numar = "1" + "0" * (int(n) - 2) + "0"
   elif k == 2:
       numar = "1" + "0" * (int(n) - 2) + "1"
   elif k == 3:
       numar = "1" + "0" * (int(n) - 2) + "2"
   elif k == 4:
       numar = "1" + "0" * (int(n) - 2) + "3"
   elif k == 5:
       numar = "1" + "0" * (int(n) - 2) + "4"
   elif k == 6:
       numar = "1" + "0" * (int(n) - 2) + "5"
   elif k == 7:
       numar = "1" + "0" * (int(n) - 2) + "6"
   elif k == 8:
       numar = "1" + "0" * (int(n) - 2) + "7"
   return numar
  1. Verificăm dacă numerele introduse sunt valide, iar dacă sunt, afișăm cel mai mic număr cu n cifre, având restul împărțirii la 9 egal cu k

if __name__ == '__main__':

  n = input()
  k = input()
  if validare_date_numar(n) and validare_date(k):
      print("\nDatele sunt introduse corect.\n")
      numar = print_num(n, int(k))
      print(numar)
  else:
      print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>