Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 01.11.2018
Сообщений: 35

Проверить является ли число степенью двойки

13.01.2021, 20:05. Показов 2442. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.
Операцией возведения в степень пользоваться нельзя! Решить через рекурсию. Мне не понятно почему не работает проверка на четность и нечетность в цикле for, хотя я предусмотрел эту проверку с помощью if / else. Программа при вводе любого числа пишет yes не могли объяснить почему. С Уважением!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
#include <iostream>
 
using namespace std;
int f(int);
 
 
const int two = 2;
 
int result;
 
int check;
 
int main()
{
    int n;
    cout << " enter num:";
    cin >> n;
    for(int i = 2; i <= n; i++)
    {
//      cout << f(i) << " ";
        if(f(i) % 2 == 0)
        {
            cout << " YES";
            break;          
        }
            else           
            {
                cout << " NO";
                break;      
            }
    }
 
    return 0;
    
}
 
int f(int num)
{
    if(num == two)
    {
       result = two;
     // cout << " now result is " << result << " " << endl;
      return result;
 
    }
       else
       {
        f(num - 1);
        result *= two;
     //  cout << " now result is " << result << " " << endl; 
       return result;
    
       }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2021, 20:05
Ответы с готовыми решениями:

Проверить, является ли число степенью двойки
Бьюсь с самого утра все никак. Условия Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или...

Проверить, является ли число степенью двойки
Если число степень 2, то ДА, иначе НЕТ. #include &lt;fstream&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; using namespace std; int main()...

Проверить, является ли число точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией...

5
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
13.01.2021, 20:42
Лучший ответ Сообщение было отмечено Volga_ как решение

Решение

Накрутил ты...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int isPowerOfTwo(int n)
{
    if (n==1)  return 1;
    if ((n > 0) && (n%2==0)) return isPowerOfTwo(n/2);
    return 0;
}
 
int main()
{
    int n;
    cout << "n=";
    cin >> n;
    cout << isPowerOfTwo(n) << endl;
 
    return 0;
}
Хотя проще всего вот такое решение:

C++
1
2
3
4
int isPowerOfTwo(int n)
{
    return ((n-1)&n)==0;
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
05.10.2021, 23:40
Цитата Сообщение от Catstail Посмотреть сообщение
int isPowerOfTwo(int n)
{
    return ((n-1)&n)==0;
}
Спасибо за красивое решение
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
05.10.2021, 23:50
Цитата Сообщение от Catstail Посмотреть сообщение
Хотя проще всего вот такое решение:

C++
1
2
3
4
int isPowerOfTwo(int n)
{
    return ((n-1)&n)==0;
}
это решение покажет что 0 степень двойки да и отрицательные попадают туда же

C++
1
2
3
4
5
bool isPowerOfTwo(int n)
{
  if(n<1) return false;
    return ((n-1)&n)==0;
}
Добавлено через 2 минуты
хотя с отрицательными я погорячился
будут степенями только при переполнении диапазона
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
06.10.2021, 00:34
ValeryS, это решение покажет что 0 степень двойки
Только добавить еще условие чтобы убрать значения n<=0, то все будет ОК. Однако по-моему это прекрасное решение.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
06.10.2021, 06:27
Цитата Сообщение от Volga_ Посмотреть сообщение
Только добавить еще условие чтобы убрать значения n<=0, то все будет ОК
что я и сделал
Цитата Сообщение от ValeryS Посмотреть сообщение
if(n<1) return false;
Цитата Сообщение от Volga_ Посмотреть сообщение
Однако по-моему это прекрасное решение.
никто и не спорит Но справедливости ради, надо сказать, решение это уже классическое и входит в основы программирования
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2021, 06:27
Помогаю со студенческими работами здесь

Рекурсия: проверить, является ли число точной степенью двойки
Принять с клавиатуры натуральное число N. Написать рекурсивную функцию, которая будет выводить слово YES, если число N является точной...

Рекурсия: проверить, является ли число точной степенью двойки
Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. ...

Как на стадии компиляции проверить что число является степенью двойки
Очень простой вопрос - как на стадии компиляции проверить что число является степенью двойки? Как проверить на стадии исполнения знаю, но...

Является ли число степенью двойки
Условие: Входные данные Входной файл INPUT.TXT содержит единственное целое число N, не превосходящее 10000 по абсолютной величине. ...

Является ли число степенью двойки
не понимаю в чём ошибка вроде все условия соблюдены. есть чисел вида 2K, где K – некоторое неотрицательное целое число. Назовем такие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru