На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение
Администратор




Сообщение: 3329
ссылка на сообщение  Отправлено: 18.02.22 21:02. Заголовок: Задача 22.190


Ольга пишет:
 цитата:
Никак не могу решить задание №190 из ege22(Е. Джобс) Ниже записана программа. Получив на вход число x, эта программа печатает два числа L и M. Сколько существует натуральных чисел x, при вводе которых алгоритм печатает 6 и 0?
 x = int(input()) 
L, M = 0, 0
while x > 0:
  L = L + 1
  if x % 16 % 2 == 0:
    M = M + 1
  else:
    M = M - 1
  x = x // 16
print(L)
print(M)

Ответ: 4 915 200. 
Никак не могу решить. L=6 – количество работы цикла (сколько раз число 16 укладывается в число х +1 )
M=0 – нет чисел, которые делятся на 16 и на 2 (т.е. на 2^5).
4915200 = 2 ^16 · 3 · 5 · 5
Видимо нужно найти общее число, которое будет получаться при L=6 и отнять те, которые делятся на 16 и на 2.
Помогите, пожалуйста!

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]


Администратор




Сообщение: 3330
ссылка на сообщение  Отправлено: 18.02.22 22:24. Заголовок: Вот переборное решен..


Вот переборное решение, отрабатывает за приемлемое время:
 count = 0 
for xx in range(int('100000',16), int('FFFFFF',16)+1):
x = xx
L, M = 0, 0
while x > 0:
L = L + 1
if x % 16 % 2 == 0:
M = M + 1
else:
M = M - 1
x = x // 16
if L == 6 and M == 0:
count += 1
print(count)


___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 3331
ссылка на сообщение  Отправлено: 18.02.22 22:31. Заголовок: Поляков пишет: M=0 –..


Поляков пишет:
 цитата:
M=0 – нет чисел, которые делятся на 16 и на 2 (т.е. на 2^5).

Это неверно. Условие M = 0 означает, что в шестнадцатеричной записи числа равное количество чётных и нечётных цифр.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 75
ссылка на сообщение  Отправлено: 19.02.22 06:09. Заголовок: Если решать аналитич..


Если решать аналитически, то имеем следующее рассуждение.

Количество разрядов 16-го числа равно 6 (L == 6), количество четных и нечетных разрядов одинаковое (M = 0).

Рассмотрим два случая: когда старший разряд четный и когда старший разряд нечетный.

Ч*****
В этом случае нужно найти количество сочетаний из 5 по 2 для расположения четных чисел. 5!/(3!*2!) = 10
На первой (старшей) позиции может быть 7 цифр (четные кроме 0). На всех остальных - один из 8. 7*85

Н*****
Рассуждение аналогичное, за тем исключением, что на первой позиции может быть 8 цифр.

Итого имеем:
7*85 + 8*85 = 15*85 = 491520 для каждой конфигурации последовательности цифр
491520*10 = 4915200 всего комбинаций

Хочешь 100? Готовься на 110! Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 77
ссылка на сообщение  Отправлено: 19.02.22 07:26. Заголовок: Также 15 можно объяс..


Также 15 можно объяснить тем, что на первой позиции (в старшем разряде) не может быть 0. То есть только 15 из 16 допустимых цифр.

Дальнейшие разряды (2 четных + 3 нечетных и 2 нечетных + 3 четных) имеют симметричную схему решения.

5!/(3!*2!) - количество конфигураций,
85 - количество вариантов для каждой конфигурации.

Итого сразу имеем выражение:
15*85*10 = 4915200

Хочешь 100? Готовься на 110! Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 787
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет