1347 - A k cifra dintr-un numar
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">
- 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>