Top.Mail.Ru
Ответы

Программирование 10 класс

Значение арифметического выражения 16560+16120-х, где х — целое положительное число больше 400, записали в 16-ричной системе счисления.Определите наименьшее значение х при котором в 16-ричной записи результата выражения содержится ровно 442 нуля В ответе запишите число в десятичной системе счисления.ПРАВИЛЬНО ЛИ Я НАПИСАЛА ПРОГРАММУ???

По дате
По Рейтингу
Аватар пользователя
Новичок
6мес

В 16-ричной системе число 16⁵⁶⁰ + 16¹²⁰ имеет вид (в фигурных скобках кол-во повторов предшествующей цифры):

1
 10{439}10{120} 

Если мы отнимем от него число 1, получим:

1
 10{440}F{120} 

Число с 440 нулями.

Чтобы получить 442 нуля, надо отнять число, оканчивающееся в 16-ричной системе на 2 нуля. Минимальное такое число 0x100 и в результате его отнимания получим искомые 442 нуля:

1
 10{440}F{118}0{2} 

Но 0x100 = 256, а по условию x > 400. Так что берём следующее число с двумя нулями x = 0x200 = 512 и получаем:

1
 10{440}F{117}E0{2} 


Ответ: 512

БЕЗ программирования.

Аватар пользователя
Высший разум
6мес

Может и прав, что поф...но вот гляжу на эти отступы и думаю, а верно ли пошли в питоне, так как все же не смотрится этот код понятно.
Ну а по поводу алгоритма, вроде же есть 16560+16120-х выражение, потом берете и начинаете как у вас с 400 и далее искать...но это же ленивый способ, допустим вы найдете, что 16560+16120-400 = 32280 или 7E18 чтобы был ноль, надо к 8 добавить 8 и получим 7E20 чтобы получить еще один ноль, то достаточно (16560+16120-400+8) умножить на 16 и станет 7E200 и так далее нужное кол. раз...ну вот зачем в цикле перебирать другие 15, если ноль появляется только при умножении потом на 16?
Вот и выходит, что надо сделать так: (16560+16120-400+8) * 16 в степени 441
Сколько будет не знаю, но вы уж проверьте...я не питонист