Форум » Обработка символьных строк » Задача 17 ЕГЭ №28 (А. Куканова) » Ответить

Задача 17 ЕГЭ №28 (А. Куканова)

Юлия Драма: Здравствуйте! Решаю задачу, но не полностью совпадает ответ. Подскажите, пожалуйста, где ошибка. УСЛОВИЕ: 28) (А. Куканова) Рассматривается множество целых чисел, принадлежащих числовому отрезку [3439; 7410], которые удовлетворяют следующим условиям: − запись в двоичной и шестеричной системах счисления заканчивается разными цифрами; − кратны 9, 10 или 11. Найдите количество таких чисел и максимальное из них. МОЁ РЕШЕНИЕ: largest = 0 count = 0 for i in range(3439, 7411): if i % 9 == 0 or i % 10 == 0 or i % 11 == 0: a = str(bin(i)) # Двоичная система счисления b = '' while i > 0: b = str(i % 6) + b i = i // 6 if a[-1] != b[-1]: count = count + 1 if i > largest: largest = i print(count, largest)

Ответов - 6

Юлия Драма: С ОТСТУПАМИ! largest = 0 count = 0 for i in range(3439, 7411): ....if i % 9 == 0 or i % 10 == 0 or i % 11 == 0: ........a = str(bin(i)) # Двоичная система счисления ........b = '' ........while i > 0: ..............b = str(i % 6) + b ..............i = i // 6 ........if a[-1] != b[-1]: ............count = count + 1 ....if i > largest: ........largest = i print(count, largest)

Юлия Драма: ОТВЕТЫ К ДАННОЙ ЗАДАЧЕ НА САЙТЕ: 683 7407 МОИ ОТВЕТЫ: 683 7409

polyakovss: Здравствуйте, Юлия Драма! Вы пишете: Подскажите, пожалуйста, где ошибка. [pre2] largest = 0 count = 0 for i in range(3439, 7411): if i % 9 == 0 or i % 10 == 0 or i % 11 == 0: a = (bin(i)) # Двоичная система счисления b='' x=i while x: b = str(x % 6) + b x //= 6 if a[-1] != b[-1]: count = count + 1 if i > largest: largest = i print(count,' ',largest) [/pre2]


Анастасия Куканова: Добрый вечер. Несмотря на то, что polyakovss выше уже исправил ошибку, хочется заметить, что решение в целом переусложнено. Учитывая то, что последняя цифра в записи числа в N-ичной системе cчисления — это остаток от деления этого числа на N, проверка условия неравенства последних цифр сводится к [pre2]if i % 6 != i % 2:[/pre2]

Юлия Драма: Спасибо, поняла!

polyakovss: Короткое решение: L = [x for x in range(3439, 7411) if (x % 9 == 0 or x % 10 == 0 or x % 11 == 0) and ( x % 2 != x % 6)] print(len(L),' ',L[-1])



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