Раз натуральное, значит целое, но не значит, что чётное. Надо делить на 10 и избавляться от остатка, пока не останется одна цифра(То есть, при последующем делении на 10 выйдет число меньше 1). Дальше сравниваешь если цифра делиться на 2 без остатка и получаешь тебе ответ. Если без остатков, то цифра чётная, если же с остатком при делении на 2, то цифра нечётная.
Если тебе нужен сам алгоритм, то можешь отметить ответ, как нарушение, но я тебе дал ответ, как бы решал я. Языков программирования много не знаю, так что писать алгоритм не буду.
Это понимать так, как и написано: n XOR x, где x равно (n>>1) (число, которое получится, если побитово сдвинуть n вправо на 1). Побитовый сдвиг это такая операция, при которой двоичная запись числа сдвигается на указанное количество бит вправо или влево, а пустые биты заполняются значением бита знака числа n (+ это 0, минус это 1). Например переменная n размером 1 байт имеет значение 7, это выглядит как 00000111. Если выполнить операцию n>>1, то надо просто стереть (1) одну правую единицу, а слева дописать один ноль (ноль, потому что n положительное, если бы n было отрицательное, то дописывается 1). Получится 00000011=3, то есть 7>>1 = 3. Таким образом (если n=7), исходная запись означала бы n^(n>>1) = 7 XOR (7>>1) = 7 XOR 3 = 00000111 XOR 00000011 = 00000100 = 4 Вроде так как-то.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку