python найти k-ную цифру в произведении огромных чисел из '1'
я попытался в тупую умножить два числа на '1' и умножить их друг на друга,затем найти k-ную цифру, но ограничение длинны n и m аж 10**18, так что выдает OverFlowError:
n,m,k = map(int,input().split())
n = '1' * n #ошибка на этой строке к примеру с данными 11111111111111111 1111111111111111(оба числа <10**18) 1
m = '1' * m
stroka = int(n) * int(m)
print(str(stroka)[k-1])
как устранить ошибку, ну или как найти число номер k в произведении чисел из одних единиц , не работая с такими большими числами?
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Как вариант:
def main(n:int, m:int, k:int):
if n > m:
n, m = m, n
mult_len = n+m-1
if k > mult_len:
return
if n == 1:
return '1'
res = ''.join([str(i) for i in range(1, n+1)[::-1]])
res_len = len(res)
num = 1
result = ''
while res_len + len(result) < mult_len:
result += str(num)
if num < n:
num += 1
result += res
return result[k-1]
n = int(input('n: '))
m = int(input('m: '))
k = int(input('Позиция: '))
print(main(n, m, k))