Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Вопрос по тесту в задаче: сложность бинарного поиска
1
  1  Досымханова Зауре, 19 апреля 2024 г. 9:42:35
      НЕГРЫ НЕГРЫ НЕГРЫ
  2  Полецая Анастасия Олеговна, 13 апреля 2024 г. 10:56:11
      Спасибо! Поняла!
  3  Беляев Сергей Николаевич, 13 апреля 2024 г. 10:53:53
      Да всё не так. У Вас неверное решение. Скажем, при N=7 Ваша программа выдает 4. А при N=8 у Вас получается 3. Разумеется, что при росте значения N ответ не может возрастать. При N=1000 у Вас получается целых 500 попыток! В то время, как очевидно, что ответ должен быть 10.
  4  Полецая Анастасия Олеговна, 13 апреля 2024 г. 9:29:22
      Мой алгоритм:


#include <iostream>
#include <cmath>
using namespace std;

bool getIsEven(unsigned long long N)
{
bool r;
if (N % 2 == 0)
{
r = true;
}
else
{
r = false;
}
return r;
}

double getPower(unsigned long long N)
{
return std::log(N) / std::log(2);
}

bool getIsInteger(double Q)
{
return Q == (unsigned long long)Q;
}

int main()
{
unsigned long long n;
// cout<< " Enter N: ";
cin >> n;
if (n == 1)
{
cout << 0;
return 0;
}
double power = getPower(n);
bool isPowerInteger = getIsInteger(power);
if (isPowerInteger)
{
cout << power;
}
else
{
bool isEven = getIsEven(n);
if (isEven)
{
cout << n / 2;
}
else
{
cout << n / 2 + 1;
}
}
}

Казалось бы: что не так?? А у меня выдает ошибку на 3 тесте. Что не так?? Что проверяет третий тест?
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru