1464 - Șir7: Difference between revisions
Pagină nouă: ==Enunt== Ionuț este pasionat de numere. Într-o zi , Ionuț a găsit o foaie și, pornind de la cifra 9, a construit un șir '''S''' de numere '''naturale nenule''' ai cărui primi termeni sunt: 9 19 39 49 69 79 99 109 129 139 159............... În altă zi, pornind de la cifra 7, a construit șirul 7 17 37 47 67 77 97 107 127 137 157............... În altă zi, Ionuț a construit același șir pornind de la cifra '''P'''. ==Cerință== Scrieți un algoritm care determ... |
Vardai Erwin (talk | contribs) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== | ==Enunț== | ||
Ionuț este pasionat de numere. Într-o zi , Ionuț a găsit o foaie și, pornind de la cifra 9, a construit un șir '''S''' de numere '''naturale nenule''' ai cărui primi termeni sunt: | Ionuț este pasionat de numere. Într-o zi , Ionuț a găsit o foaie și, pornind de la cifra 9, a construit un șir '''S''' de numere '''naturale nenule''' ai cărui primi termeni sunt: | ||
9 19 39 49 69 79 99 109 129 139 159............... | 9 19 39 49 69 79 99 109 129 139 159............... | ||
Line 15: | Line 15: | ||
==Date de ieșire== | ==Date de ieșire== | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și | |||
programul va afișa pe ecran un număr natural reprezentând cel de-al '''K'''-lea termen al șirului '''S'''. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse." | |||
==Restricții | ==Restricții și precizări== | ||
1 ≤ '''P''' ≤ 9 | 1 ≤ '''P''' ≤ 9 | ||
2 ≤ '''K''' ≤ <math>10^9</math> | 2 ≤ '''K''' ≤ <math>10^9</math> | ||
Line 27: | Line 28: | ||
;Ieșire | ;Ieșire | ||
:Datele de intrare corespund restricțiilor impuse. | |||
:139 | :139 | ||
Latest revision as of 17:56, 22 April 2023
Enunț[edit | edit source]
Ionuț este pasionat de numere. Într-o zi , Ionuț a găsit o foaie și, pornind de la cifra 9, a construit un șir S de numere naturale nenule ai cărui primi termeni sunt: 9 19 39 49 69 79 99 109 129 139 159...............
În altă zi, pornind de la cifra 7, a construit șirul 7 17 37 47 67 77 97 107 127 137 157...............
În altă zi, Ionuț a construit același șir pornind de la cifra P.
Cerință[edit | edit source]
Scrieți un algoritm care determină, pornind de la cifra P, cel de-al K-lea termen al sirului S.
Date de intrare[edit | edit source]
Se citesc de la tastatură P și K cu semnificația din enunț.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran un număr natural reprezentând cel de-al K-lea termen al șirului S. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
1 ≤ P ≤ 9 2 ≤ K ≤
Exemplul 1[edit | edit source]
- Intrare
- 9 10
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 139
Explicatie[edit | edit source]
Șirul generat este 9 19 39 49 69 79 99 109 129 139 159. Al 10-lea termen este 139
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def kth_term(p: int, k: int) -> int:
""" Funcția calculează al k-lea termen din șirul S, pornind de la cifra p.
Args: p - int: prima cifră din șirul S k - int: indicele termenului căutat din șirul S
Returns: int: al k-lea termen din șirul S """ if k % 2 == 0: return int(str(k // 2 + k - 2) + str(p)) else: return int(str(k // 2 + k - 1) + str(p))
def validare(p: int, k: int) -> bool:
""" Funcția validează datele de intrare, în funcție de restricții.
Args: p - int: prima cifră din șirul S k - int: indicele termenului căutat din șirul S
Returns: bool: True dacă datele de intrare sunt valide, False altfel """ if not (1 <= p <= 9): print("Eroare: p trebuie să fie între 1 și 9.") return False if not (2 <= k <= 10**9): print("Eroare: k trebuie să fie între 2 și 10^9.") return False return True
if __name__ == "__main__":
# Citire date de intrare p, k = map(int, input().split())
# Validare date de intrare if not validare(p, k): print("Datele de intrare nu corespund restricțiilor impuse.") exit() print("Datele de intrare corespund restricțiilor impuse.") # Calculare și afișare rezultat print(kth_term(p, k))
</syntaxhighlight>