Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
AGPro
7 / 7 / 2
Регистрация: 03.04.2016
Сообщений: 90
1

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

04.04.2016, 18:59. Просмотров 1637. Ответов 6
Метки нет (Все метки)

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

Sample Input 1:1

Sample Output 1:YES

Sample Input 2:2

Sample Output 2:YES

Код рабочий. Скажите, можно ли обойтись без pow?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int i=0, c=0, n;
cin >> n;
    while (c<n) {
        c=pow(2,i);   
    if  (c == n ) {
    cout << "YES"; 
    break;}
    if (c > n){
    cout << "NO";
    }
     i++; 
     }
return 0;
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2016, 18:59
Ответы с готовыми решениями:

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

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

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

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

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

6
RQdan
65 / 65 / 37
Регистрация: 26.10.2013
Сообщений: 198
04.04.2016, 19:14 2
Лучший ответ Сообщение было отмечено AGPro как решение

Решение

можно. Делением на 2.
C++
1
2
3
4
5
6
bool rez = true;
while (rez && (n > 1)) {
  if(n % 2 == 1) rez = false;
  else n /= 2; 
}
if(rez) cout<<"Yes"; else cout<<"No";
1
AGPro
7 / 7 / 2
Регистрация: 03.04.2016
Сообщений: 90
04.04.2016, 19:40  [ТС] 3
RQdan, Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main() {
int n;
bool rez = true;
    cin >> n;
while (rez && (n > 1)) {
  if(n % 2 == 1) rez = false;
  else n /= 2; 
}
if (rez)
    cout<<"YES"; 
else cout<<"NO";
 
  return 0;
}
0
DrOffset
10996 / 5867 / 1442
Регистрация: 30.01.2014
Сообщений: 9,461
04.04.2016, 19:57 4
Цитата Сообщение от AGPro Посмотреть сообщение
Скажите, можно ли обойтись без pow?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
bool isPower2(unsigned int x)
{
    return (x != 0) && !(x & (x - 1));
}
 
int main() 
{
    int n;
    std::cin >> n;
    
    std::cout << (isPower2(n) ? "YES" : "NO");
}
1
RQdan
65 / 65 / 37
Регистрация: 26.10.2013
Сообщений: 198
04.04.2016, 20:20 5
DrOffset, оригинально и до безобразия просто.
0
castaway
Эксперт С++
4946 / 3052 / 455
Регистрация: 10.11.2010
Сообщений: 11,147
Записей в блоге: 10
Завершенные тесты: 1
04.04.2016, 20:32 6
Цитата Сообщение от AGPro Посмотреть сообщение
точной степенью двойки
А бывает неточная степень двойки?
0
Croessmah
++Ͻ
15896 / 9018 / 1734
Регистрация: 27.09.2012
Сообщений: 22,169
Записей в блоге: 2
Завершенные тесты: 2
04.04.2016, 20:34 7
AGPro, в общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)
0
04.04.2016, 20:34
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2016, 20:34

Выведите YES, если число N является точной степенью двойки, или NO в противном случае.(Рекурсия)
Правильно ли мое решение? Есть ли другие решения? Заранее спасибо. #include &lt;iostream&gt; ...

Является ли заданное натуральное число степенью двойки
Является ли заданное натуральное число степенью двойки? Добавлено через 3 часа 46 минут...

Рекурсия: проверить, является ли число точной степенью числа 5
Дано натуральное число n. вывести 1, если n является точной степенью числа 5 , и 0 в противном...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.