Нахождение цифры на k -ой позиции в произведении двух натуральных чисел, состоящих из одних единиц
Закономерность произведений чисел, состоящих из единиц проста: в числе будет сначала от 1 до максимальной цифры, затем повторяется макс.цифра, пока длинна числа не будет равна длине наибольшего числа, там опять будет от 1 до макс.цифры только в обратном порядке максимальная цифра в числе- это длина самого мелкого числа к примеру 111 * 11111 = 1233321 написал я код, но он не работает (точнее не со семи числами).
Подскажите, пожалуйста, где ошибка?
n,m,k = map(int,input().split())
mini = min(n,m)
maxi = max(n,m)
if mini <= k <= maxi:
print(mini)
else:
stroka = ''
for i in range(mini-1):
stroka += str(i)
if k > mini:
k -= maxi
mini = stroka[::-1]
print(stroka[k-1])
Ответы (2 шт):
Вот так можно сделать:
def main(a:str, b:str, k:int):
if a > b:
a, b = b, a
mult_len = len(a)+len(b)-1
if k > mult_len:
return
if a == '1':
return '1'
res = ''.join([str(i) for i in range(1, len(a)+1)[::-1]])
res_len = len(res)
num = 1
result = ''
while res_len + len(result) < mult_len:
result += str(num)
if num < len(a):
num += 1
result += res
return result[k-1]
a = input('Первое число: ')
b = input('Второе число: ')
k = int(input('Позиция: '))
print(main(a, b, k))
Я посмотрел твой код. Там много ошибок. например ты передаешь в range() число mini в результате ты получаешь последовательность длинной mini, а не длинной len(mini) к тому же твоя последовательность начиналась с 0. В общем я поправил все , но пришлось переписать многое.
n, m, k = map(int, input().split())
mini = min(n, m)
maxi = max(n, m)
stroka = '' # пустая строка
for i in range(1, len(str(mini)) + 1):
stroka += str(i) # создаем последовательность левой части числа от 1 до len(mini) + 1
d = stroka[-1] # берем последнюю цифру
r = stroka[-2::-1] # разворачиваем строку, без последней цифры, для правой части
stroka += d * (len(str(maxi)) - len(str(mini))) # добавляем нужное кол-во цифр в середину
stroka += r # добавлем правую часть, теперь stroka = произведению чисел в str формате
print(stroka[k-1]) # выводим цифру на искомой позиции