Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2021, 02:57   #1
eikturnir
Новичок
Джуниор
 
Регистрация: 14.04.2021
Сообщений: 4
По умолчанию Максимум на сломанном калькуляторе

Максимум на сломанном калькуляторе
Петя Торопыжкин познакомился с гипотезой Коллатца: какое бы натуральное число 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)
В компиляторе все ок, но проверщик выдает Программа выдаёт неверный ответ

Помогите разобраться?!
eikturnir вне форума Ответить с цитированием
Старый 14.04.2021, 12:17   #2
FrosyaZZ
Форумчанин
 
Регистрация: 16.11.2020
Сообщений: 243
По умолчанию

Цитата:
Сообщение от eikturnir Посмотреть сообщение
В компиляторе все ок
Компилятор не проверяет логику и правильность вашей программы с точки зрения поставленного задания.

Цитата:
Сообщение от eikturnir Посмотреть сообщение
Если таких членов несколько, выведите тот, который имеет больший индекс.
Это условие у вас точно не выполняется.
FrosyaZZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема в калькуляторе mrsums Общие вопросы Delphi 3 14.09.2013 19:29
Кнопка +/- в калькуляторе Хитман Общие вопросы Delphi 9 10.10.2012 01:06
ввод в калькуляторе katerina17171 Помощь студентам 0 25.10.2011 11:31
ошибки в калькуляторе -=Andriushka=- Помощь студентам 3 05.03.2011 18:37
проверка в калькуляторе 4UDaK Помощь студентам 2 27.04.2010 19:13