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

Является ли число суммой степеней двойки? - C++

Восстановить пароль Регистрация
 
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
12.12.2012, 17:03     Является ли число суммой степеней двойки? #1
помогите написать такую функцию, чтоб проверяла число на сумму степеней двойки(без повторений этих степеней)

например число 30 устраивает (2+4+8+16) а 34 и 33 и 32 и тп уже не устраивает уже не устраивает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
12.12.2012, 17:23     Является ли число суммой степеней двойки? #2
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
#include <iostream>
 
using namespace std;
 
int main() {
    int a;
    cin >> a;
 
    int it = 2;
    int summ = it;
 
    while(summ <= a) {
        it *= 2;
        summ += it;
 
        if(a == summ) {
            cout << "YES";
            return 0;
        }
 
    }
 
    cout << "NO";
 
    return 0;
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
12.12.2012, 17:27     Является ли число суммой степеней двойки? #3
ЛЮБОЕ целое число является суммой степеней двойки без повторений.
33 = 2^5 + 2^0.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,843
Записей в блоге: 2
Завершенные тесты: 1
12.12.2012, 17:30     Является ли число суммой степеней двойки? #4
представьте необходимое число в двоичной системе - ответ станет очевиден.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
12.12.2012, 17:31     Является ли число суммой степеней двойки? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool function(int n) {
   int it = 2;
    int summ = it;
 
    while(summ <= n) {
        it *= 2;
        summ += it;
 
        if(n == summ) {
            return true;
        }
 
    }
 
    return false;
}
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
12.12.2012, 18:52  [ТС]     Является ли число суммой степеней двойки? #6
Цитата Сообщение от CheshireCat Посмотреть сообщение
ЛЮБОЕ целое число является суммой степеней двойки без повторений.
33 = 2^5 + 2^0.
забыл написать, что 2^0 не учитывать

sovaz1997, спасибо! работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 19:24     Является ли число суммой степеней двойки?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,843
Записей в блоге: 2
Завершенные тесты: 1
12.12.2012, 19:24     Является ли число суммой степеней двойки? #7
Цитата Сообщение от Tiva Посмотреть сообщение
забыл написать, что 2^0 не учитывать
тогда только четные числа можно представить, ибо четное+четное=четное
Yandex
Объявления
12.12.2012, 19:24     Является ли число суммой степеней двойки?
Ответ Создать тему
Опции темы

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