1907 - Numar Minim: Difference between revisions
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 == | ||
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 | : 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 | 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>
- 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
- 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
- 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
- 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>