Форум » Выполнение и анализ алгоритмов для исполнителей » Не сходится ответ в онлайн-тестах по ЕГЭ. » Ответить

Не сходится ответ в онлайн-тестах по ЕГЭ.

egeinfa: Онлайн-тесты ЕГЭ, 5 - Выполнение и анализ простых алгоритмов, 7 задание. Не сходится ответ. Мой ответ: 92, вроде бы удовлетворяет алгоритму, но всё равно не сходится с ответом на сайте. Вот условие задачи: 7. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописывается (дублируется) последняя цифра. 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее 80, которое могло получиться в результате работы автомата. В ответе это число запишите в десятичной системе.

Ответов - 17, стр: 1 2 All

Поляков: egeinfa пишет: Мой ответ: 92 Показывайте, как решали.

egeinfa: Поляков пишет: Сначала просто подбирала числа больше 80, как и указано в условии. Никакие числа меньше 92 не подходили под алгоритм. Беру R=92. Перевожу в двоичную систему, получается: 1011100. По условию это число: 1011100, без трёх последних разрядов является исходным числом N в двоичной системе. Начинаю применять алгоритм: 1)Строится двоичная запись числа N: Она уже есть: 1011. 2)К этой записи дописывается (дублируется) последняя цифра: 10111. 3)Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное: 101110 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным: 1011100 Получается 1011100. Переводим в десятичную систему счисления. Ответ: 92

Поляков: egeinfa пишет: двоичном коде числа N чётное число единиц, и 1, если нечётное: 101110 Двоичный код числа N = 1011. Поэтому в конце должна быть 1.


egeinfa: Поляков пишет: То есть, имеется ввиду исходный двоичный код числа N? Без применения второго пункта алгоритма? Под "исходный двоичный код числа N" я имею ввиду 1011. А код с применением второго пункта алгоритма 10111. Просто решала сейчас решала задание 8 в этом же тесте, которое практически абсолютно такое же. Решала этим же способом и ответ получился правильным. А если решать вашим способом и брать всегда исходный двоичный код, то в 8 получится неверный ответ. Да и не только в 8, но и в других заданиях этого же типа.

Поляков: egeinfa пишет: имеется ввиду исходный двоичный код числа N Ну там же так и написано.

egeinfa: Поляков пишет: Хорошо, но всё же повторюсь, что если во всех заданиях такого типа и из этого же самого теста, брать под каждый пункт алгоритма исходный двоичный код, то во всех заданиях ответы будут неправильные, за исключением 7 номера. А если брать допустим, для второго пункта алгоритма уже преобразованный код из первого алгоритма, то ответы выходят правильными. Я всё же склоняюсь к тому, что в номере 7 ошибка.

Поляков: egeinfa пишет: во всех заданиях ответы будут неправильные Приведите пример. Я всё же склоняюсь к тому, что в номере 7 ошибка. Это ваше право, конечно же.

egeinfa: Поляков пишет: В пример возьму задание 8. 8. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописывается (дублируется) последняя цифра. 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное. 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным. Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число N, после обработки которого автомат получает число, большее 136. В ответе это число запишите в десятичной системе. Здесь правда нужно ввести минимальное число N, но сначала я всё равно ищу R>136. Все R<142 мне не подходят под условия алгоритма. Беру R=142. Перевожу в двоичную систему счисления, получается: 10001110. Теперь начинаю применять алгоритм на данном двоичном числе. По условию исходное число N является R в двоичной СС, но без трёх последних разрядов. Значит это: 10001. 1) Строится двоичная запись числа N: 10001. 2) К этой записи дописывается (дублируется) последняя цифра: 100011. 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное: 1000111 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным: 10001110. Получается как раз число R=142 в двоичной системе счисления, значит оно мне подходит под алгоритм. Дальше просто беру исходный двоичный код числа N 10001, перевожу в десятичную систему счисления, получается 17. И ответ в этой задаче сходится, он как раз таки 17.

Поляков: egeinfa пишет: 3) Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное: 1000111 Здесь должен быть 0. 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным: 10001110. Должно быть 01. Это число 141.

egeinfa: Поляков пишет: Странно...а если допустим взять задание номер 5. 5. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) Справа дописывается бит чётности. 3) Справа дописывается ещё один бит чётности. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R, большее, чем 96, которое могло получиться в результате работы этого алгоритма. В ответе это число запишите в десятичной системе. Здесь я также подбираю числа. Беру R=102. Перевожу в двоичную: 1100110. По условию N на два последних разряда меньше. Значит это 11001. Применяю алгоритм: 1) Строится двоичная запись числа N: 11001. 2) Справа дописывается бит чётности: 110011. 3) Справа дописывается ещё один бит чётности: 1100110. Получается двоичная запись числа 102. Ответ совпадает с ответом на сайте: 102.

Поляков: egeinfa пишет: 1) Строится двоичная запись числа N. 2) Справа дописывается бит чётности. 3) Справа дописывается ещё один бит чётности. Здесь как раз описывается тот алгоритм, который вы и используете - четность определяется по последнему результату.

egeinfa: Поляков пишет: Спасибо большое! Какое, однако, невнятное условие.

Поляков: egeinfa пишет:Какое, однако, невнятное условие. Не могу согласиться.

s11kai: egeinfa пишет: Сначала просто подбирала числа больше 80, как и указано в условии. Никакие числа меньше 92 не подходили под алгоритм. Беру R=92. Перевожу в двоичную систему, получается: 1011100. По условию это число: 1011100, без трёх последних разрядов является исходным числом N в двоичной системе. Начинаю применять алгоритм: 1)Строится двоичная запись числа N: Она уже есть: 1011.+ 2)К этой записи дописывается (дублируется) последняя цифра: 10111.+ 3)Затем справа дописывается 0, если в двоичном коде числа N чётное число единиц, и 1, если нечётное: 101110 - откуда здесь 0 смотри строку 1) там утверждается, что двоичный код 1011, количество 1 нечетно, следовательно ставим здесь 1 => не 101110, а 101111 4) К полученному результату дописывается ещё один бит чётности так, чтобы количество единиц в двоичной записи полученного числа стало чётным: 1011100 - было нечетное количество 1 => будет 1011111 Получается 1011100. 1011111Переводим в десятичную систему счисления. Ответ: 92 95

kates: Я тоже долго думала, но там вот такой прикол: Там говорится в 3-ем и 4-ом пункте про "двоичную запись числа", а когда мы удваиваем последнюю цифру, то это уже "изменённая двоичная запись числа". То есть необходимо проверять на чётность по количеству единиц в самом начале (до удвоения последней цифры). Это правда странно, но это так. И тогда ответ правильный: 95, а в 8 задаче просто совпадение. вот код на питоне: for i in range (1,1000): n=bin(i)[2:] cnt=n.count('1') if cnt%2==0: n=n+n[-1]+'0' else: n=n+n[-1]+'1' if cnt%2==0: n=n+'0' else: n=n+'1' if int(n,2)>80: print(int(n,2)) break



полная версия страницы