Найти - Пользователи
Полная версия: Максимум на сломанном калькуляторе
Начало » Центр помощи » Максимум на сломанном калькуляторе
1
eiktyrnir
Максимум на сломанном калькуляторе
Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число a0 ни взять, последовательность (часто называемая сиракузской ), вычисляемая от выбранного числа по правилу

a_n+1=a_n/2, если an — чётное число
a_n+1=3a_n+1, если an — нечётное число
обязательно достигнет единицы. Он решил поэкспериментировать с последовательностью: задать начальную величину, вычислить сколько-то первых членов и посмотреть, какого наибольшего значения они достигнут. Только на калькуляторе, на котором он считал, сломался экран, и было видно только три последних разряда получаемых чисел. Поэтому Петя искал максимум из тех чисел, которые он видел. Напишите программу, которая выведет найденный им максимум.

Входные данные

В единственной строке через пробел заданы два целых числа: a_0 — начальный член последовательности и k — количество членов, которые вычисляет Петя, то есть индекс последнего вычисленного члена (1≤a_0≤107, 0≤k≤104). Гарантируется, что все получаемые члены последовательности не превосходят 109.

Выходные данные

Выведите через пробел два целых числа — член последовательности a_i, 0≤i≤k, для которого три последние цифры дают максимальное число, и индекс i этого члена. Если таких членов несколько, выведите тот, который имеет больший индекс.

Примеры
Ввод
2518 5
Вывод
1889 3

Мое решение
 ao, k = map(int, input().split())
i = 0
am = ao
for j in range(k):
    ao = ao//2 if ao%2 == 0 else ao*3+1
    if am%1000 < ao % 1000:
        am = ao
        i = j + 1
print(am, i)
В компиляторе все ок, но проверщик выдает Программа выдаёт неверный ответ

Помогите разобраться?!
py.user.next
Что-то не понял
eiktyrnir
В единственной строке через пробел заданы два целых числа: a_0 — начальный член последовательности и k — количество членов, которые вычисляет Петя, то есть индекс последнего вычисленного члена (1≤a_0≤107, 0≤k≤104). Гарантируется, что все получаемые члены последовательности не превосходят 109.
eiktyrnir
Примеры
Ввод
2518 5
Если a0 не может быть больше 107, то как в примере может быть введено 2518?

eiktyrnir
Гарантируется, что все получаемые члены последовательности не превосходят 109.
eiktyrnir
Вывод
1889 3
Во, опять. Первый введённый не может быть больше 107, а получаемые не могут быть боьше 109. А тут получаемый равен 1889.

eiktyrnir
но проверщик выдает Программа выдаёт неверный ответ
Ну, он может быть написан так же, как и это задание с противоречием.

Зачем тебе вообще их решать? Некачественный материал, мало чему учит, так ещё и с ошибками. В реальной работе задачи вообще другие и требуют совершенно других навыков. А это всё можно отнести только к навыку разбирания чужого говнокода от предыдущих исполнителей и навыку разгадывания говнозаданий от заказчиков, которые ничего ни в чём не смыслят и сами не знают, чего хотят. Учиться на таком материале программированию - стратегия проигрышная.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB