Форум » Системы счисления » 8-е задание Всероссийского пробника ЕГЭ по информатике » Ответить

8-е задание Всероссийского пробника ЕГЭ по информатике

s11kai: Константин Юрьевич, здравствуйте. Опять проблемы, и кроме как к Вам больше не к кому обратиться. Подскажите, пожалуйста, в чем тут дело. Решая 8-е задание Всероссийского пробника ЕГЭ по информатике «Определите количество шестизначных чисел в пятеричной системе счисления, которые не оканчиваются цифрами 3 или 4 и не начинаются с цифры 1.» - столкнулся с очень странным поведением питона. Приведенный ниже алгоритм почему то дает ответ - 9375 [pre2] a=2*5**5 b=4*5**5+4*5**4+4*5**3+4*5**2+4*5**1+4 c=0 for i in range(a,b+1): x=i if ( x % 5 != 3) or ( x % 5 != 4): c = c+1 print(c) [/pre2] а так, как ниже, печатает - 5625 [pre2] a=2*5**5 b=4*5**5+4*5**4+4*5**3+4*5**2+4*5**1+4 c=0 for i in range(a,b+1): x=i if ( x % 5 != 3): if ( x % 5 != 4): c = c+1 print(c) [/pre2]

Ответов - 8

s11kai: Понимаю, что можно было обойтись всего одной строкой, например так: print(3*5*5*5*5*3), но хотелось бы понять, почему не срабатывает первый вариант "перебором" Спасибо

s11kai: и так работает правильно [pre2] a=2*5**5 b=4*5**5+4*5**4+4*5**3+4*5**2+4*5**1+4 c=0 d=0 for i in range(a,b+1): x=i if ( x % 5 == 3) or ( x % 5 == 4): d=d else: c = c+1 print(c) [/pre2] И так, работает: [pre2] a=2*5**5 b=4*5**5+4*5**4+4*5**3+4*5**2+4*5**1+4 c=0 for i in range(a,b+1): x=i if (x % 5 == 0 or x % 5 == 1 or x % 5 == 2 ): c = c+1 print(c) [/pre2] Но это все обходные пути, а в лоб не хочет!!! Просто кошмар какой то

Поляков: s11kai пишет: if ( x % 5 != 3) and ( x % 5 != 4):


s11kai: Поляков пишет:  цитата: if ( x % 5 != 3) and ( x % 5 != 4): Кажется понял, остаток не может быть равен одновременно 3 или 4, но он может быть не равен и 3 и 4! Век живи, век учись! Спасибо, Константин Юрьевич!

polyakovss: Здравствуйте, s11kai! Не вызывает сомнений, что лучший вариант решения этой задачи - print(3*5*5*5*5*3). Записать вариант решения "перебором" в одну строку тоже можно, например, так: print(len([x for x in range(int('200000',5),int('444442',5)+1) if str(x % 5) not in '34'])) Быть может, пригодится.

s11kai: Здравствуйте, polyakovss Спасибо за красивый код

sain4: Здравствуйте . Задачу решить перебором. Определите количество пятизначных чисел, записанных в девятеричной системе счисления, которые не начинаются с нечетных цифр, не оканчиваются цифрами 1 или 8, а также содержат в своей записи не более одной цифры 3. k= 4*9*8*8*8 или 4*8*9*9*8 Ответ не сходится. Подскажите пожалуйста.

s11kai: sain4 пишет: Ответ не сходится. Подскажите пожалуйста. Что подсказать то, если только - почему ответ не сходится, то для этого нужно, как минимум, увидеть ваше решение?! С другой стороны, из условия не совсем понятно что такое k, если это девятеричное число, то откуда там цифра 9 и что означает сия запись "4*9*8*8*8", стало быть следует прокрутить в цикле все девятеричные числа диапазона: 21234 21235 21236 21237 ....... 88887 отсекая в младшем разряде 1 и 8, выбирая те, что начинаются с четных, при этом, исключая все значения содержащие более 1 тройки



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