1464 - Șir7: Difference between revisions

From Bitnami MediaWiki
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...
 
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Enunt==
==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==
Programul va afișa pe ecran un număr natural reprezentând cel de-al '''K'''-lea termen al șirului '''S'''.
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 si precizări==
==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>