1907 - Numar Minim

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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ş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

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

Exemplu

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

Explicație

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

Rezolvare

# 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.")