Форум программистов, компьютерный форум CyberForum.ru

Определить, является ли число степенью двойки - C++

Восстановить пароль Регистрация
 
Realmucho
0 / 0 / 0
Регистрация: 04.08.2016
Сообщений: 79
24.08.2016, 21:07     Определить, является ли число степенью двойки #1
По заданному положительному числу n < 2^64 определить, является ли оно степенью двойки. Решение должно иметь сложность O(1).

1 Yes
17 No
1024 Yes


Внимание: 64-битные числа нужно хранить в типе unsigned long long
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
24.08.2016, 21:25     Определить, является ли число степенью двойки #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
if (n && !(n & (n - 1))) { /* YES */ }
Новичок
Модератор
 Аватар для Новичок
1141 / 712 / 148
Регистрация: 17.07.2012
Сообщений: 4,044
Записей в блоге: 1
Завершенные тесты: 2
24.08.2016, 23:34     Определить, является ли число степенью двойки #3
Kastaneda, нуль вроде не положительное число, потому это можно убрать
Цитата Сообщение от Kastaneda Посмотреть сообщение
n &&
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
25.08.2016, 05:33     Определить, является ли число степенью двойки #4
Новичок, но ноль же не степень двойки.
Yandex
Объявления
25.08.2016, 05:33     Определить, является ли число степенью двойки
Ответ Создать тему
Опции темы

Текущее время: 18:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru