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

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

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

АвторСообщение



Сообщение: 118
ссылка на сообщение  Отправлено: 10.02.23 12:47. Заголовок: 5_305


Исполнитель Сыщик получает на вход натуральное число N и строит новое число R следующим образом.
1) Строится шестнадцатеричная запись числа N.
2) Далее эта запись обрабатывается по следующему правилу:
а) Если число чётное, справа приписывается максимально возможная цифра, в противном случае справа приписывается 0.
б) Справа приписывается шестнадцатеричная цифра – остаток от деления суммы цифр шестнадцатеричной записи на 16.
в) Пункт б выполняется ещё один раз.
Полученная таким образом запись является шестнадцатеричной записью искомого числа R.
Укажите минимальное число N, для которого максимальная цифра в полученной шестнадцатеричной записи встречается в пять раз чаще, чем минимальная. В ответе это число запишите в десятичной системе счисления.

Подскажите пожалуйста с чего начать?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 2 [только новые]







Сообщение: 353
ссылка на сообщение  Отправлено: 20.03.23 12:41. Заголовок: elzara пишет: Подск..


elzara пишет:

 цитата:
Подскажите пожалуйста с чего начать?


Как один из вариантов, наверное с цикла!

for i in range(10,300):#В процессе работы, данное число нужно будет увеличивать или заменить данный цикл на while

затем выполняем пункт
1) значение переменной цикла переводим в 16 СС, например, так:

s = hex(i)[2:]

или так:
 
st = i
s = ''
while st:
s = str(st%16) + s
st = st//16

после чего переходим к следующему пункту
2)а проверяем четность числа, и если оно четное, а вот с этого места идет неясность условия, не совсем понятно, что имеет ввиду автор:
" а) Если число чётное, справа приписывается максимально возможная цифра, в противном случае справа приписывается 0."

можно предположить, что это должна быть максимально возможная цифра десятичной системы счисления, поскольку в следующем условии конкретно оговорено: "б) Справа приписывается шестнадцатеричная цифра – остаток от деления суммы цифр шестнадцатеричной записи на 16 "


Поэтому можно рассмотреть обе версии, но в более компактной записи, например, так:
  
for i in range(10,100):
s = hex(i)[2:] + ('9' if i % 2 == 0 else '0')
...

Либо так:

for i in range(10,100):
s = hex(i)[2:] + ('f' if i % 2 == 0 else '0')
...

... и так далее, согласно списку правил из условия

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 354
ссылка на сообщение  Отправлено: 21.03.23 04:45. Заголовок: Полное решение в ком..


Полное решение в компактном виде может выглядеть примерно так:
 
#если максимальное число пункта а) в десятичной системе счисления

def su( s ):
res = sum( int(x,16) for x in s )
return res

for i in range(100000,200000):
s = hex(i)[2:] + ('9' if i % 2 == 0 else '0')
s += hex(su(s)%16)[2:]
s += hex(su(s)%16)[2:]
if 5*s.count(min(s)) == s.count(max(s)) :
print('вариант 1','10-е',i,'16-е',s )

#если максимальное число пункта а) в шестнадцатеричной системе счисления

def su( s ):
res = sum( int(x,16) for x in s )
return res

for i in range(100000,200000):
s = hex(i)[2:] + ('f' if i % 2 == 0 else '0')
s += hex(su(s)%16)[2:]
s += hex(su(s)%16)[2:]
if 5*s.count(min(s)) == s.count(max(s)):
print('вариант 2','10-е',i,'16-е',s )

Если кому будет нужно, то можно представить данное решение и в более развернутом виде (без использования функций питона)

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

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