|
|
|
|
|
|
|
Вернуться
| 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 тесте. Что не так?? Что проверяет третий тест?
|
|
|
Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!
| | | |