e-olymp 247. Несчастливый автобус

Задача

Витя живёт довольно далеко от школы, поэтому, чтобы не опаздывать на уроки, он ездит на автобусе. Витя — очень наблюдательный мальчик, он старается замечать все интересные совпадения, которые происходят в жизни. Однажды он заметил, что как только он садится в автобус, у которого номер в двоичном представлении второй цифрой справа имеет единичку, так его обязательно вызовут к доске отвечать заданный урок. А кто же любит ходить к доске?! Тем более, если накануне просидел за компьютером и не выучил уроки!!! Явно, что в таком случае грозит «двойка» …

Помогите Вите составить список автобусов, которые он считает «несчастливыми» автобусами.

Входные данные

В первой строке записано число [latex]N (0 ≤ N ≤ 100000)[/latex] — количество автобусов, далее указаны номера автобусов [latex]m_i (0 ≤ m_i ≤ 2^{31}-1)[/latex] по одному в строке.

Выходные данные

Выведите количество «несчастливых» автобусов.

Тесты

Входные данные Выходные данные
2
0
3
1
3
1
2
4
1
4
2
1
3
5
2
5
1
2
3
7
4
3

Решение

В двоичном коде число заканчивается на [latex]1[/latex] тогда и только тогда, когда остаток от деления на [latex]2[/latex] равен [latex]1[/latex] . Для определения предпоследнего символа , в каждом числе отбрасываем последний символ двоичного представления путем деления нацело на [latex]2[/latex] и проверяем нечетность. Подсчитываем все нужные варианты

Ссылки

e-olymp
Ideone

2 thoughts on “e-olymp 247. Несчастливый автобус

    • Второй бит равен 1, если число в остатке на 4 даёт два или три. Т.е. больше единицы. Можно было не делить на два и сэкономить одну строчку. Другой вариант — просто побитово умножить на маску в которой во всех битах, кроме второго стоят нули. Проще говоря на два. Но и так неплохо.
    • Все тесты, кроме первого некорректны. Может просто не дописали?
    • Решения нет. Есть описание программы, которая сама себя отлично описывает. А почему программа дает верный ответ?
    • Что за странный код? Он даже не компилируется. По ссылке на ideone код вообще на этот не похож? Это не очень правильно заставлять меня на праздники проверять то, на что Вы сами смотреть не хотите 🙁
    • Переменная temp2 лишняя. Если Вам хочется куда-то положить результат деления на два, то можно использовать ту же переменную. А вообще Вы ведь просто проверяете temp / 2 % 2. Что мешает так прямо и написать внутри условного оператора?
    • Название temp совершенно не подходит для переменной в которой хранится номер автобуса.

Добавить комментарий