Форум программистов, компьютерный форум, киберфорум
Наши страницы

Найти следующее после n число, в двоичной записи которого столько же единиц - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ класс дата http://www.cyberforum.ru/cpp-beginners/thread344218.html
Создать класс типа - дата с полями: день (1-31), месяц (1-12), год(целое число).Класс имеет конструктор:с параметрами, без параметров,копирования; деструктор; функции-члены получения дня,месяца и...
C++ CodeLite - отсутствуют библиотеки Здравствуйте, дорогие форумчане. Необходима кросcплатформенная среда разработки C++. На рабочем компе через центр приложений (Ubuntu) поставил CodeLite. Столкнулся с проблемой отсутствия инклудов... http://www.cyberforum.ru/cpp-beginners/thread344179.html
C++ Получить список студентов с указанием среднего балла
имеется информация о студентах группы: Ф.И.О., результаты экзаменационной сессии. Мне надо получить список студентов с указанием среднего балла. Для решения данной задачи мне надо использовать...
Код ждёт ввода следующей строчки - цикл повторяется бесконечно. C++
В учебнике написано, что вот этот код #include <iostream> #include <string> using namespace std; int main() { string word; while (cin >> word) cout << "прочитано слово:...
C++ Как сменить IP адрес http://www.cyberforum.ru/cpp-beginners/thread344162.html
день добрый. не подскажите как программно заставить венду сменить IP ?
C++ Немного о динамическом выделении памяти ... объявление данных в классе: class Employee {.......... private: char *firstName; char *lasrName; } подробнее

Показать сообщение отдельно
diagon
Higher
1936 / 1202 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.08.2011, 14:47  [ТС]
Я, видимо, чего-то не понимаю...
Но ответом на 182 должен быть 185.
Мое решение в лоб
C++
1
2
3
4
5
6
7
8
9
10
11
12
int f(int n){
    std::string bin = std::bitset<15> (n).to_string();
    for (int i = bin.size() - 1; i > 0; --i)
    {
        if (bin[i] == '1' && bin[i - 1] == '0')
        {
            std::swap(bin[i], bin[i-1]);
            break;
        }
    }
    return strtol(bin.c_str(), 0, 2);
}
А также функция villu выдают 186. Функция Ольги вообще что-то левое выдает >_> Дело в алгоритме, видимо...
Т.е. не все так просто. Все должно быть еще проще =\ Лучшие попытки - 114 символов.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru