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

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

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

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



Не зарегистрирован
ссылка на сообщение  Отправлено: 06.03.23 15:57. Заголовок: Неверный ответ в задаче 5901 (Е. Джобс)


Здравствуйте. Решай задачи 5 на сайте Полякова К. В задача 5901 не получается указанного правильным ответа - 227.
227 в двоичной СС - 1110 0011 (по условию слева дописаны три младших разряда, т.е. мы должны были бы увидеть число в котором три первый цифры и три последние одинаковы, а перед тремя первыми стоит единица, иначе незначащие нули бы ушли и единицы слились воедино)
Если для числа 11100011 убрать три разряда слева получим 00011, уберем незначащие нули и получим 011 (оставила один ноль, чтобы было три разряда), если вновь проделать 3 шаг, то запись должна иметь вид 110011, что снова противоречит ответу)
Мой вариант ответа 247 - в двоичной 1111 0111 - убрав три левых разряда - 10111 - переведем в 10-ю СС - 23 - начальное число 25

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







Сообщение: 117
ссылка на сообщение  Отправлено: 07.03.23 05:25. Заголовок: Что мешает добавить ..


Что мешает добавить незначащий ноль при выполнении указанной в задании операции?

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



Сообщение: 1
ссылка на сообщение  Отправлено: 08.03.23 20:41. Заголовок: Поменяется конечное ..


Поменяется конечное число, чем больше незначащих нулей будем оставлять тем больше оно станет. Вообще в задаче возможен такой исход? Т.е. 11100111 - такой код тоже вполне может получиться?
Но тогда я все равно не понимаю как можно прокрутить алгоритм (вручную) наоборот исходя из двоичного кода числа 227 - 1110 0011, ведь три младших разряда 011 (а значит справа мы должны были бы увидеть их), может я что-то не так вообще в сути задачи поняла

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





Сообщение: 15
ссылка на сообщение  Отправлено: 15.03.23 14:07. Заголовок: Возможно, Вам это поможет


"Прикол" в этом задании в том, что минимальный ответ получается не для минимального N. Результаты работы алгоритма "скачут".
Вот начало списка результатов: 247 255 227 357 292 422 487 235 300 430 300 430 495 243 308 438 373 503 316 ...
Среди них, как видите, есть и 247 и 227.
Я решал эту задачу в PascalABC.Net. Вот мое решение:
 
uses School;

function automat(n: integer): integer;
var
n2: string;
begin
n := n - Bin(n).CountOf('0');
n2 := Bin(n);
n2 := RightStr(n2, 3) + n2;
Result := Dec(n2, 2);
end;

begin
(1..10000).Select(n -> automat(n))
.Where(R -> R > 224)
.Min
.Print;
end.


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





Сообщение: 373
ссылка на сообщение  Отправлено: 24.03.23 12:37. Заголовок: GasDM21 пишет: "..


GasDM21 пишет:

 цитата:
Результаты работы алгоритма "скачут".
Вот начало списка результатов: 247 255 227 357 292 422 487 235 300 430 300 430 495 243 308 438 373 503 316 ...
Среди них, как видите, есть и 247 и 227.


Когда результаты скачут, это может означать только одно - алгоритм кривой!

Вот пример алгоритма, где результат не скачет, а выдает единственно правильный ответ: 227
 
Min = 100000
for i in range(1, 225):
n = i - bin(i)[2:].count('0')
n2 = bin(n)[2:]
if len(n2) >= 3:
n2 = n2[-3:] + n2
if int(n2,2) > 224:
if int(n2,2) < Min:
Min = int(n2,2)
print(Min)


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





Сообщение: 25
ссылка на сообщение  Отправлено: 24.03.23 13:28. Заголовок: И в чем же "крив..


И в чем же "кривизна"? Последовательно перебираются числа N, по ним строится R, и они "скачут" то вверх, то вниз.

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





Сообщение: 377
ссылка на сообщение  Отправлено: 24.03.23 17:01. Заголовок: GasDM21 пишет: И в ..


GasDM21 пишет:

 цитата:
И в чем же "кривизна"? Последовательно перебираются числа N, по ним строится R, и они "скачут" то вверх, то вниз.


Вопрос, конечно, интересный, даже и не знаю как ответить. Начну пожалуй с крылатого выражения

Элементарно, GasDM21!

Алгоритм дающий однозначный ответ - правильный или "прямой", отсюда следует, что алгоритм не дающий однозначного ответа - неправильный или "кривой"

Не нравиться слово «кривой» назовите его "скачущим то вверх, то вниз", т.е. - неуправляемым, а стало быть плохим!
А про плохое зеркало как говорят - кривое!

Не нравится "кривой", поищите в интернете синонимы для слова "кривой" и выберите любой, я не против

Толкование смысла слова кривой
Устар. Несправедливый, неправильный, ложный.
Вы все правы, один я крив. А. Н. Толстой, Иван Грозный.
Порядки-то кривые были при царе. Шолохов, Тихий Дон.
синонимы к слову кривой

Ничего личного, но предложенный вами алгоритм дает значения, которые с ваших же слов "скачут" то вверх, то вниз, а скачут кто, если перечислять в порядке убывания: Лошади, ..., блохи. Так что определение "кривой", самое толерантное
`
Если я ошибаюсь, поправьте!

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





Сообщение: 378
ссылка на сообщение  Отправлено: 24.03.23 18:05. Заголовок: И в чем же "крив..


В дополнение к выше сказанному и с развернутым примером ибо, ... вспомнил еще одно выражение "критикуя, предлагай":

GasDM21 пишет:

 цитата:
Результаты работы алгоритма "скачут".
Вот начало списка результатов: 247 255 227 357 292 422 487 235 300 430 300 430 495 243 308 438 373 503 316 ...

`
стало быть это неправильный или "плохой" алгоритм

А вот другой алгоритм, я бы сказал - "Обратный", предложенному выше!

Он, как и ваш, последовательно перебирает числа N, и по ним строит числа R, но, в отличии от вашего, выдает единственный и правильный ответ
 
Min = set()
for N in range(224,1,-1):
n = N - bin(N)[2:].count('0')
n2 = bin(n)[2:]
if len(n2) >= 3:
R = int(n2[-3:] + n2,2)
if R > 224: Min.add(R)
print('Ответ:',min(Min))


Ответил ли я на ваш вопрос и понятен ли мой ответ, уважаемый GasDM21?

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





Сообщение: 380
ссылка на сообщение  Отправлено: 01.04.23 05:38. Заголовок: s11kai пишет: Ответ..


s11kai пишет:

 цитата:
Ответил ли я на ваш вопрос и понятен ли мой ответ, уважаемый GasDM21?



Молчание - знак согласия!

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

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