1347 - A k cifra dintr-un numar

From Bitnami MediaWiki
Revision as of 05:09, 7 May 2023 by Ardelean Alexandru (talk | contribs) (Pagină nouă: ==Cerința== Se construiește un număr natural <code>N</code> ale cărui prime <code>51</code> cifre sunt: <code>N = 112233445566778899100111122133144155166177188199200......</code> Deduceți regula prin care se construiește numărul <code>N</code> și stabiliți care este cea de a <code>K</code>-a cifră din scrierea acestui număr. Scrieţi un program care citeşte numărul <code>K</code> şi care determină cea de a <code>K</code>-a cifră din scrierea lui <code>N</co...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Se construiește un număr natural N ale cărui prime 51 cifre sunt:

N = 112233445566778899100111122133144155166177188199200......

Deduceți regula prin care se construiește numărul N și stabiliți care este cea de a K-a cifră din scrierea acestui număr.

Scrieţi un program care citeşte numărul K şi care determină cea de a K-a cifră din scrierea lui N.

Date de intrare[edit | edit source]

Programul citește din fișierul kcifra.in, de pe prima linie, numărul natural nenul K.

Date de ieșire[edit | edit source]

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."

Pe următorul rând se va afișa un număr natural (o cifră) reprezentând cea de a K-a cifră din scrierea numărului N construit.

În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."

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

  • 1 ≤ K ≤ 588888
  • K număr natural

Exemplu 1[edit | edit source]

Intrare
10
Ieșire
5

Explicație[edit | edit source]

Primele 10 cifre ale lui N sunt: 1 1 2 2 3 3 4 4 5 5.

Exemplu 2[edit | edit source]

Intrare
51
Ieșire
Datele de intrare corespund restricțiilor impuse.
0

Explicație[edit | edit source]

Primele 51 cifre ale lui N sunt: 112233445566778899100111122133144155166177188199200.

Exemplu 3[edit | edit source]

Intrare
-2
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 1347 K cifra

def conditii(k):

   if not is_natural(k):
       return False
   return 1 <= int(k) <= 588_888


def is_natural(k):

   try:
       # Dacă 'k' poate fi convertit la un număr întreg, verificăm dacă este pozitiv
       # (numerele naturale sunt numere întregi pozitive)
       return int(k) > 0
   except ValueError:
       return False


def k_cifra(k):

   # Generarea numărului N
   n = 
   i = 1
   # Generăm numărul N doar până la cea de a k-a cifră
   while len(n) < k:
       # Secvența N urmărește regula: pentru orice i -> n(i) = i + ultima cifră a lui i
       # ex: pentru i=12 -> n(i)=122. pentru i=150 -> n(i)=1500
       n += str(i)+str(i)[-1]
       
       # Pasul următor
       i += 1
   print(n[k-1])


if __name__ == "__main__":

   k = input()
   if not conditii(k):
       print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       print("Datele de intrare corespund restricțiilor impuse.")
       k_cifra(int(k))

</syntaxhighlight>