4049 - N Div N Len: Difference between revisions
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:== | ||
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;"> | <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;"> | 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;"> | 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;"> | 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= | <syntaxhighlight lang="python" line="1"> | ||
n | 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='') | |||
print( | |||
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".