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

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

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

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



Сообщение: 3
ссылка на сообщение  Отправлено: 23.09.21 12:02. Заголовок: Задача №3940 (№5 в ЕГЭ) Е. Джобс



 цитата:
(№ 3940) (Е. Джобс) Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1) Строится двоичная запись числа N.
2) В этой записи последний ноль заменяется на первые две цифры полученной
записи. Если нуля нет, алгоритм аварийно завершается.
3) Запись записывается справа налево (в обратную сторону).
4) Результат переводится в десятичную систему счисления.
Для какого минимального значения N в результате работы алгоритма получится число 123?



Добрый день! К данной задаче прилагается ответ = 47. Но решая "руками" получается ответ 54. Кроме того по условию задачи п. 2 - если в конце двоичного числа нет нуля - алгоритм прерывается автоматически, т.е. никакое нечетное число N не может выдать результата, т.к. алгоритм прервется.

Исходя из этих условий написал программу (может и неказисто выглядит, но на скорую руку, чтобы разобрать во время урока):
 
for i in range(1,100):
n = i
s = ''
while n>0:
s = str(n%2)+s
n=n//2

if s[len(s)-1]=='0':
#print(s)
s = s[0:len(s)-1]+s[0:2]
#print(s)

ns = ''
for j in range(len(s)):
ns = s[j]+ns
#print(ns)

nn =0
for j in range(len(ns)):
nn=nn+int(ns[j])*2**(len(ns)-j)
nn//=2
if nn == 123:
print(i)

Получен - единственный ответ 54. Т.е. говорить при данной формулировке задачи о нескольких возможных вариантах, среди которых надо выбрать наименьший, как-то у меня не получается. Поясните, пожалуйста, это я не догоняю формулировку задачи, или есть какой-то подвох?

Спасибо.

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







Сообщение: 51
ссылка на сообщение  Отправлено: 28.09.21 18:00. Заголовок: Последний ноль не об..


Последний ноль не обязательно должен быть последним разрядом.

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



Сообщение: 12
ссылка на сообщение  Отправлено: 11.10.21 11:30. Заголовок: EugeneJobs пишет: ..


EugeneJobs пишет:
[quote]` так сказано же "последний ноль ". Алгоритм же один раз выполняется?

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



Сообщение: 13
ссылка на сообщение  Отправлено: 11.10.21 11:30. Заголовок: EugeneJobs пишет: ..


EugeneJobs пишет:
[quote]` так сказано же "последний ноль ". Алгоритм же один раз выполняется?

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



Сообщение: 4
ссылка на сообщение  Отправлено: 29.09.21 13:57. Заголовок: Спасибо! теперь стал..


Спасибо! теперь стало ясно. Любите Вы задачи с подвохами составлять =)

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



Сообщение: 14
ссылка на сообщение  Отправлено: 11.10.21 11:34. Заголовок: А последний ноль в п..


А последний ноль в принципе)))

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



Сообщение: 15
ссылка на сообщение  Отправлено: 11.10.21 11:34. Заголовок: А последний ноль в п..


А последний ноль в принципе)))

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



Сообщение: 30
ссылка на сообщение  Отправлено: 15.10.21 02:48. Заголовок: k=0 for n in range(..


 
k=0
for n in range(1,128):
a=n
x=''
while a>0:
x=str(a%2)+x
a=a//2
p=x.rfind('0')
if x.count('0')!=0:
s=x[:p]+x[0:2]+x[(p+1):]

#print(x)
#print(s)
#print(' ')
x=s[::-1]
b=int(x,2)
#print(b)

if b==123:
print(n)


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





Сообщение: 52
ссылка на сообщение  Отправлено: 15.10.21 08:39. Заголовок: Задача легко решаетс..


Задача легко решается руками:
123 в двоичном представлении 1111011. В обратную сторону = 1101111. Очевидно, что минимальное исходное число должно начинаться с 10...
В нашем числе 1101111 этот 0 заменили на 10. Значит, исходным было число 101111. Это 47.

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

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