1347 - A k cifra dintr-un numar
Cerința
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
Programul citește din fișierul kcifra.in
, de pe prima linie, numărul natural nenul K
.
Date de ieșire
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
1 ≤ K ≤ 588888
K
număr natural
Exemplu 1
- Intrare
- 10
- Ieșire
- 5
Explicație
Primele 10
cifre ale lui N
sunt: 1 1 2 2 3 3 4 4 5 5
.
Exemplu 2
- Intrare
- 51
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 0
Explicație
Primele 51
cifre ale lui N
sunt: 112233445566778899100111122133144155166177188199200
.
Exemplu 3
- Intrare
- -2
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
#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))