Форум » Выполнение и анализ алгоритмов для исполнителей » задача 5, №5991, автор А. Богданов (по-моему, неправильный ответ) » Ответить

задача 5, №5991, автор А. Богданов (по-моему, неправильный ответ)

Serov Sergej: Уважаемый Константин Юрьевич. Проблема с задачей №5 (автор А.Богданов, №5991). Указан ответ: при N=94 будто бы достигается минимум числа R (и этот минимум, кстати, тогда будет равен 98). Но программа, написанная мной находит, что при N=124 число R=64 !!! Программу на Питоне с комментариями прилагаю. [pre2] mi=10**1000 for n in range(64,500): b=bin(n)[2:] if b.count('1')%2==0: #если сумма цифр четная, то инвертируем последние 4 бита c=b[:-4] for i in range(-4,0): if b[i]=='0': c=c+'1' else: c=c+'0' else: #если сумма цифр нечетная, то инвертируем биты с номерами 1-4 c=b[0] for i in range(1,5): if b[i]=='0': c=c+'1' else: c=c+'0' c=c+b[5:] r=int(c,2) if n==94: print('n= ',n,'r= ',r) print('n= ',b) print('r= ',c) if n==124: print() print('n= ',n,'r= ',r) print('n= ',b) print('r= ',c) if r<mi: mi=r n1=n print('otvet',n1) [/pre2]

Ответов - 6

Danov: Разбирали тут: https://youtu.be/bXT6apWapL0?t=3431

Serov Sergej: Danov День добрый. Спасибо за ссылку, но там разбирается другая задача (в случае нечетной суммы инвертируются другие биты)

Serov Sergej: Danov День добрый. Спасибо за ссылку, но там разбирается другая задача (в случае нечетной суммы инвертируются другие биты)


Serov Sergej: Спасибо, за ссылку, но в предложенном Вами разборе несколько другое условие (в случае нечетной суммы инвертируются другие биты)!

Danov: mi=10**1000 Не делайте так. Меня мурашки пробирают от чисел больше гугола... частиц во вселенной всего порядка 10**80. Такие числа долго обрабатываются и требуют немало памяти для хранения. Посчитайте, сколько (тренировка задания 11). По условию задачи ошибка в неправильном понимании: б) если сумма цифр в двоичной записи числа нечётная, то инвертируются 4 бита в двоичных разрядах 1-4 далее в скобках явно написано: нумерация разрядов справа налево, начиная с 0 Разряды числа ВСЕГДА нумеруются справа налево! Смотри формулу для позиционных систем счисления, где индекс это степень при основании. А в строке слева направо!!! Предлагаю еще раз пересмотреть разбор и свое решение.

Serov Sergej: Спасибо. Всё понял. Меня сбил с толку пример, в котором оказалось одинаково и справа налево и слева направо.... 37 1(0010)1



полная версия страницы