0951 - Cifre7

From Bitnami MediaWiki
Revision as of 21:24, 24 October 2023 by Bonte Lucas Gabriel (talk | contribs) (Pagină nouă: Se generează un şir de cifre ai cărui primi termeni sunt, în această ordine: '''1, 1, 2, 4, 7, 3, 4, 4, 1, 9, 4, 4, 7, 5, 6, 8,...''' ==Cerință== Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale n, k şi p şi care să determine: a) numărul de apariţii ale cifrei k printre primii n termeni ai şirului din enunţ; b) cel de-al p-lea termen al şirului din enunţ. ==Date de intrare== Programul...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Se generează un şir de cifre ai cărui primi termeni sunt, în această ordine: 1, 1, 2, 4, 7, 3, 4, 4, 1, 9, 4, 4, 7, 5, 6, 8,...

Cerință

Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale n, k şi p şi care să determine:

a) numărul de apariţii ale cifrei k printre primii n termeni ai şirului din enunţ; b) cel de-al p-lea termen al şirului din enunţ.

Date de intrare

Programul citește de la tastatură numerele n k p.

Date de ieșire

Programul va afișa pe ecran două numere naturale:

  • primul număr va reprezenta numărul de apariţii ale cifrei k printre primii n termeni ai şirului din enunţ;
  • al doilea număr va reprezenta cel de-al p-lea termen al şirului din enunţ.

Restricții de precizări

  • Numerele n k p sunt naturale
  • 17 ≤ n ≤100; 0 ≤ k ≤ 9; 1≤ p ≤ 2000000000
  • Pentru rezolvarea corectă a cerinţei a) se acordă 30% din punctaj iar pentru cerinţa b) 70% din punctaj.

Exemplu

Intrare
19 4 26
Ieșire
5
7


Rezolvare

<syntaxhighlight lang="python" line="1" start="1"> def sir_numere(n, k, p):

   sir = [1, 1, 2, 4, 7, 3, 4, 4, 1, 9]
   while len(sir) < max(n, p):
       ultim_cifra = sir[-1] % 10
       penultim_cifra = sir[-2] % 10
       antepenultim_cifra = sir[-3] % 10
       nou_cifra = (ultim_cifra + penultim_cifra + antepenultim_cifra) % 10
       sir.append(nou_cifra)
   aparitii_k = sir[:n].count(k)
   p_lea_termen = sir[p-1]
   return aparitii_k, p_lea_termen

if __name__ == "__main__":

   n = 19
   k = 4
   p = 26
   aparitii_k, p_lea_termen = sir_numere(n, k, p)
   print(aparitii_k)
   print(p_lea_termen)


</syntaxhighlight>

Explicație

Primii 19 termeni ai şirului sunt: 1,1,2,4,7,3,4,4,1,9,4,4,7,5,6, 8,9,3,0.

Primul număr afişat este 5, deoarece sunt 5 cifre din șir egale cu k (k=4) printre primii n=19 termeni ai şirului.

Al doilea număr afişat este 7, deoarece cel de-al p-lea (p=26) termen al şirului este 7.