Автор | Сообщение |
|
Отправлено: 30.04.21 17:46. Заголовок: 8-е задание Всероссийского пробника ЕГЭ по информатике
Константин Юрьевич, здравствуйте. Опять проблемы, и кроме как к Вам больше не к кому обратиться. Подскажите, пожалуйста, в чем тут дело. Решая 8-е задание Всероссийского пробника ЕГЭ по информатике «Определите количество шестизначных чисел в пятеричной системе счисления, которые не оканчиваются цифрами 3 или 4 и не начинаются с цифры 1.» - столкнулся с очень странным поведением питона. Приведенный ниже алгоритм почему то дает ответ - 9375 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) а так, как ниже, печатает - 5625 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)
|
|
|
Новых ответов нет
[см. все]
|
|
|
Отправлено: 30.04.21 17:57. Заголовок: Понимаю, что можно б..
Понимаю, что можно было обойтись всего одной строкой, например так: print(3*5*5*5*5*3), но хотелось бы понять, почему не срабатывает первый вариант "перебором" Спасибо
|
|
|
|
Отправлено: 30.04.21 18:12. Заголовок: и так работает прави..
и так работает правильно 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) И так, работает: 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) Но это все обходные пути, а в лоб не хочет!!! Просто кошмар какой то
|
|
|
|
| Администратор
|
Сообщение: 2770
|
|
Отправлено: 30.04.21 22:13. Заголовок: s11kai пишет: if ( x..
s11kai пишет: цитата: | if ( x % 5 != 3) and ( x % 5 != 4): |
|
|
|
|
|
Отправлено: 01.05.21 02:24. Заголовок: Поляков пишет: ци..
Поляков пишет: цитата: | цитата: if ( x % 5 != 3) and ( x % 5 != 4): |
| Кажется понял, остаток не может быть равен одновременно 3 или 4, но он может быть не равен и 3 и 4! Век живи, век учись! Спасибо, Константин Юрьевич!
|
|
|
|
Отправлено: 01.05.21 16:39. Заголовок: Здравствуйте, s11kai..
Здравствуйте, 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'])) |
| Быть может, пригодится.
|
|
|
|
Отправлено: 03.05.21 03:18. Заголовок: Здравствуйте, polyak..
Здравствуйте, polyakovss Спасибо за красивый код
|
|
|
|
Отправлено: 06.07.22 15:17. Заголовок: Здравствуйте . Задач..
Здравствуйте . Задачу решить перебором. Определите количество пятизначных чисел, записанных в девятеричной системе счисления, которые не начинаются с нечетных цифр, не оканчиваются цифрами 1 или 8, а также содержат в своей записи не более одной цифры 3. k= 4*9*8*8*8 или 4*8*9*9*8 Ответ не сходится. Подскажите пожалуйста.
|
|
|
|
Отправлено: 08.07.22 04:04. Заголовок: sain4 пишет: Ответ ..
sain4 пишет: цитата: | Ответ не сходится. Подскажите пожалуйста. |
| Что подсказать то, если только - почему ответ не сходится, то для этого нужно, как минимум, увидеть ваше решение?! С другой стороны, из условия не совсем понятно что такое k, если это девятеричное число, то откуда там цифра 9 и что означает сия запись "4*9*8*8*8", стало быть следует прокрутить в цикле все девятеричные числа диапазона: 21234 21235 21236 21237 ....... 88887 отсекая в младшем разряде 1 и 8, выбирая те, что начинаются с четных, при этом, исключая все значения содержащие более 1 тройки
|
|
|
|