Форум » Выполнение и анализ алгоритмов для исполнителей » Задача 5_308 (Богданов) » Ответить

Задача 5_308 (Богданов)

Наталья О.: В ответе указано число 94. Это 101 1110 ДСС. При его использовании получается R = 98 Правильнее выглядит ответ 124 (111 1100). Здесь R = 64. А требуется вывести при минимальном R.

Ответов - 4

s11kai: Наталья О. пишет: В ответе указано число 94. Это 101 1110 ДСС. При его использовании получается R = 98 9410 = 10111102 - количество "1" = 5 - число нечетное, следовательно, инвертируем 1,2,3 и 4 - й биты справа, 0 - й бит не трогаем было 10111102 стало 10000002, а это есть 6410 В случае необходимости, эту задачку можно легко решить программой

s11kai: Наталья О. пишет: Правильнее выглядит ответ 124 (111 1100). Здесь R = 64 12410 = 11111002, количество "1" - нечетно => инвертируя получаем 11111002 получаем 11000102 = 64+32+2 = 9810

s11kai: Вот программа, позволяющая получить полную распечатку преобразования чисел от 64 до 124 [pre2] def f( n ): r = bin(n)[2:] inv = "".join( ('0' if c == '1' else '1') for c in r ) if r.count('1') % 2 == 0: r = r[:-4] + inv[-4:] else: r = r[:-5] + inv[-5:-1] + r[-1] return int( r, 2 ) for n in range(64, 125): print('n',n,'bin',bin(n),'после инверсии',bin(f(n)),'R',f(n)) [/pre2]


s11kai: PS номера битов надо считать так: 7 6 5 4 3 2 1 0 первые четыре бита я выделил красным



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