Форум » Вычисление количества информации » Задача 5834 » Ответить

Задача 5834

Бабкова: В задаче 5834 у меня получился ответ 4095. Возможно, я не все условия учла. Помогите разобраться. Я рассуждала, так. Взяла приписала максимальные 2 цифры FF. Числа при делении на16 должно быть нечётное, тогда третья справа цифра 0. Расчитала ещё три цифры FFF.

Ответов - 2

Ж: [pre2] for i in range(200000): a=hex(i)[2::] if i%2==0: a=a+'f' else: a=a+'0' a=a+hex(sum(int(c) if c in '0123456789' else ord(c)-55 for c in a))[-1] a+=hex(sum(int(c) if c in '0123456789' else int(ord(c)-55) for c in a))[-1] if a.count(min(list(a)))*5==a.count(max(list(a))): print(i) [/pre2]

Поляков: Бабкова пишет: Взяла приписала максимальные 2 цифры FF. Числа при делении на16 должно быть нечётное, тогда третья справа цифра 0. Расчитала ещё три цифры FFF. Не вполне понятно, почему это должно сработать. Вот вариант правильного решения: [pre2] def alg( n ): s = f"{n:X}" s += 'F' if n % 2 == 0 else '0' for _ in range(2): q = sum( int(d,16) for d in s ) s += f"{q%16:X}" return s def valid( s ): m = min( s ) return s.count('F') == 5*s.count( m ) n = 1 while True: s = alg( n ) if valid( s ): print( n, s ) break n += 1 [/pre2]



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