определить вид числа без условных операторов и циклов [закрыт]
Учебные задания допустимы в качестве вопросов только при условии, что вы пытались решить их самостоятельно перед тем, как задать вопрос. Пожалуйста, отредактируйте вопрос и укажите, что именно вызвало у вас трудности при решении задачи. Например, приведите код, который вы написали, пытаясь решить задачу
Закрыт 2 года назад .
Задача: Дано целое число n. Выведите следующее за ним четное число. Задачу необходимо решить целочисленными операциями без использования условных операторов и\или циклов. ввод: 5, вывод: 6; ввод: 6, вывод: 8
Отслеживать
задан 30 окт 2020 в 13:37
5 2 2 бронзовых знака
Задаче тебе, тебе и выполнять.
30 окт 2020 в 13:38
@Эникейщик, спасибо за помощь
30 окт 2020 в 13:40
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Выведите следующее за ним четное число
подсказка 1: если разделить целочисленно целое число на 2, а потом умножить на 2, то получиться. чётное число не больше изначального
дальше думайте сами
подсказка 2.1: если сбросить самый правый бит натуральному числу, то получится чётное число не больше изначального
подсказка 2.2: числа в битовом представлении легко записывать через 0b , например 0xb1110111
дальше думайте сами
подсказка 3: условия можно записывать неявно, преобразовывая булев тип в целочисленный, например int(False) = 0, а int(True) = 1, а полученные 0/1 очень хорошо умножаются на любые натуральные числа 🙂
дальше думайте сами
В общем ваша задача решается минимум 3 способами + их вариациями (т.е. решений 5-10 сделать можно разной степени извращённости)
Следующее число за n
Дан битовый (двоичный) вектор длины n, требуется вывести следующий в лексикографическом порядке после него.
Замечание: обратите внимание на то, что ограничения не позволяют сгенерировать все векторы; требуется найти следующий вектор, зная только текущий.
Входные данные
В первой строке задано число n — длина битового вектора (1⩽n⩽106). На следующей строке задан сам вектор — строка длины n из нулей и единиц.
Выходные данные
Требуется вывести следующий в лексикографическом порядке вектор в виде такой же строки из нулей и единиц. Следующим после вектора из всех единиц считайте лексикографически первый вектор, то есть вектор из всех нулей.
Пример
входные данные
3
101
выходные данные
110
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
n = int(input()) a = input() if "0" in a: b = int(a, 2) c = b + 0 n = c + 1 b = '' while n > 0: b = str(n % 2) + b n = n // 2 print(b) else: b = "" for i in range(n): b = b + "0" print(b)
У меня такая идея, перевести эту строку в десятичное число(101 —> 5) потом прибавить 1 (5 —> 6) и обратно в двоичное число(6 —> 110). С этим все понятно, все выводит. Но если поставить ведующие нули на ввод строки, например «010» то выводит «11»(логично), а надо чтобы выводило «011». вот может есть идеи у кого как это сделать?
(код довольно кривой, но работает)
Добавлено через 5 минут
если кратко то вывести следующее двоичное число
Помогите решить задачу и написать программу на Python
Дано целое число n. Выведите следующее за ним чётное число. При решении этой задачи нельзя использовать условный оператор if и циклы.
Подсказка. В Python существует оператор целочисленного деления // (обсуждался в видеоуроках) и взятия остатка при делении %. Например, результат выполнения операции 15 % 7 равен 1:
Лучший ответ
n = 14
print(n + 2 — n % 2)
Остальные ответы
Дано целое число n. Выведите следующее за ним четное число. При решении этой задачи нельзя использовать условную инструкцию if и циклы. в Python.
Выбери, какие основные угрозы существуют в Интернете Общение с незнакомыми людьми в чатах или по электронной почте Поиск развлечений (например, игр) в … Интернете Угроза заражения вредоносным программным обеспечением (ПО) Установка нелицензионного программного обеспечения
які об‘єкти табличного процесора Excel ви знаєте? які їх властивості
Введи оценку (0 — остановить ввод): >>> 5 Введи балл (0 — остановить ввод): >>> 4 Введи балл (0 — остановить ввод): >>> 2 В … веди балл (0 — остановить ввод): >>> 3 Введи балл (0 — остановить ввод): >>> 0 Список оценок: [5, 4, 2, 3] Успеваемость: 75.0