4049 - N Div N Len: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
 
Paul Ungur (talk | contribs)
No edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 6: Line 6:


==Date de ieșire:==
==Date de ieșire:==
Se afișează numărul <span style="color: red;"> k</span>.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare corecte.''', apoi numărul k. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."'''.


==Restricții și precizări:==
==Restricții și precizări:==
<span style="color: red;"> 1≤n≤10^5</span>
<span style="color: red;"> 1 ≤ n ≤ 10^5</span>
Dacă există mai multe soluții posibile, se acceptă oricare.
Dacă există mai multe soluții posibile, se acceptă oricare.
Pentru <span style="color: red;"> 20 </span>de puncte, <span style="color: red;"> n≤6</span>
Pentru <span style="color: red;"> 20 </span>de puncte, <span style="color: red;"> n ≤6</span>
Pentru <span style="color: red;"> 40 </span>de puncte, <span style="color: red;"> n≤9</span>
Pentru <span style="color: red;"> 40 </span>de puncte, <span style="color: red;"> n ≤9</span>
Pentru <span style="color: red;"> 50 </span>de puncte, <span style="color: red;"> n≤18</span>
Pentru <span style="color: red;"> 50 </span>de puncte, <span style="color: red;"> n ≤18</span>


==Exemplu:==
==Exemplu:==
Intrare
Intrare
3
: 3
Ieșire
Ieșire
123
: Date de intrare corecte
: 123


==Explicație:==
==Explicație:==
Line 25: Line 26:


==Rezolvare==
==Rezolvare==
<syntaxhighlight lang=“python” line>
<syntaxhighlight lang="python" line="1">
n = int(input())
def validare_date(n):
    if not isinstance(n, int) or n < 1 or n > 10**5:
        return False
    return True


# Creăm un număr k format din n cifre "9"
k = int("9" * n)


# Verificăm dacă k este divizibil cu n, altfel scădem 1 până când găsim un astfel de număr
def find_k(n):
while k % n != 0:
    nrCif = 1
    k -= 1
    copie_n = n
    print(n, end='')
    while n:
        nrCif += 1
        n //= 10
        for i in range(1, copie_n):
            print(0, end='')


print(k)
 
if __name__ == '__main__':
    n = int(input("Introduceti n: "))
    if validare_date(n):
        find_k(n)
    else:
        if not validare_date(n):
            print("Date de intrare incorecte")
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
Codul Python de mai sus definește două funcții: validare_date și find_k. Iată o explicație pentru fiecare dintre ele:
Funcția validare_date(n):
Această funcție primește un singur parametru, n, reprezentând un număr întreg.
Verifică mai multe condiții pentru a valida datele introduse:
Verifică dacă n este de tipul int și dacă nu este, sau dacă n este mai mic decât 1 sau mai mare decât 100000, funcția returnează False, semnalând că datele sunt invalide.
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.
Funcția find_k(n):
Această funcție primește un singur parametru, n, reprezentând un număr întreg.
Funcția calculează și afișează rezultatul într-un format specific, care presupune afișarea numărului n, urmat de (n-1) de zerouri.
Începând cu nrCif = 1, se efectuează un ciclu while n, unde n este redus la jumătate în fiecare iterație. La fiecare iterație, nrCif este incrementat cu 1 și se afișează n de zerouri. Acest lucru este realizat de către bucla for care iterează de la 1 până la copie_n - 1, unde copie_n este copia inițială a valorii lui n.
La final, funcția afișează rezultatul.
În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:
Se citește de la tastatură un număr întreg n folosind funcția input().
Se apelează funcția validare_date(n) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția find_k(n) pentru a calcula și afișa rezultatul.
Dacă datele nu sunt valide, se afișează mesajul "Date de intrare incorecte".

Latest revision as of 18:05, 29 June 2023

Cerința:[edit | edit source]

Se dă un număr natural n. Găsiți orice număr k de exact n cifre care este divizibil cu n.

Date de intrare:[edit | edit source]

Se citește numărul n.

Date de ieșire:[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare corecte., apoi numărul k. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

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

1 ≤ n ≤ 10^5 Dacă există mai multe soluții posibile, se acceptă oricare. Pentru 20 de puncte, n ≤6 Pentru 40 de puncte, n ≤9 Pentru 50 de puncte, n ≤18

Exemplu:[edit | edit source]

Intrare

3

Ieșire

Date de intrare corecte
123

Explicație:[edit | edit source]

Numărul 123 are 3 cifre și este divizibil cu 3.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def validare_date(n):

   if not isinstance(n, int) or n < 1 or n > 10**5:
       return False
   return True


def find_k(n):

   nrCif = 1
   copie_n = n
   print(n, end=)
   while n:
       nrCif += 1
       n //= 10
       for i in range(1, copie_n):
           print(0, end=)


if __name__ == '__main__':

   n = int(input("Introduceti n: "))
   if validare_date(n):
       find_k(n)
   else:
       if not validare_date(n):
           print("Date de intrare incorecte")

</syntaxhighlight>

Explicatie cod:[edit | edit source]

Codul Python de mai sus definește două funcții: validare_date și find_k. Iată o explicație pentru fiecare dintre ele:

Funcția validare_date(n): Această funcție primește un singur parametru, n, reprezentând un număr întreg. Verifică mai multe condiții pentru a valida datele introduse: Verifică dacă n este de tipul int și dacă nu este, sau dacă n este mai mic decât 1 sau mai mare decât 100000, funcția returnează False, semnalând că datele sunt invalide. Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide. Funcția find_k(n): Această funcție primește un singur parametru, n, reprezentând un număr întreg. Funcția calculează și afișează rezultatul într-un format specific, care presupune afișarea numărului n, urmat de (n-1) de zerouri. Începând cu nrCif = 1, se efectuează un ciclu while n, unde n este redus la jumătate în fiecare iterație. La fiecare iterație, nrCif este incrementat cu 1 și se afișează n de zerouri. Acest lucru este realizat de către bucla for care iterează de la 1 până la copie_n - 1, unde copie_n este copia inițială a valorii lui n. La final, funcția afișează rezultatul. În cadrul secțiunii if __name__ == '__main__': se realizează următoarele acțiuni:

Se citește de la tastatură un număr întreg n folosind funcția input(). Se apelează funcția validare_date(n) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția find_k(n) pentru a calcula și afișa rezultatul. Dacă datele nu sunt valide, se afișează mesajul "Date de intrare incorecte".