В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
dunina2018
dunina2018
16.10.2020 19:54 •  Информатика

Условие
Дано натуральное число n. Необходимо определить, является ли n степенью числа 5.

Формат входных данных
Вводится целое число n (1≤n≤230).

Формат выходных данных
Выведите «YES», если n — степень пяти, и «NO» в противном случае.

входные данные
625
42
выходные данные
YES
NO

Показать ответ
Ответ:
arteommartiashev
arteommartiashev
12.02.2021 21:31

Так как тут мизерные ограничения, то для решения конкретно этой задачи можно просто проифать : если n == 5 || n == 125 , то YES , иначе NO

НО мы же не пальцем деланные, да? Поэтому решим задачку и для больших N, с асимптотикой log2(N), используя бинпоиск :

#include < iostream >

#include < cmath >

using namespace std;

bool check(int n){

   int l = 0, r = 15;

   while(l <= r){

       int m = (l + r)/2;

       if(pow(5,m) < n)

           l = m + 1;

       else if(pow(5,m) > n)

           r = m - 1;

       else

           return true;

   }

   return false;

}

signed main() {

   int N;

   cin >> N;

   check(N) ? cout << "YES" : cout << "NO";

}

0,0(0 оценок)
Ответ:
kolodenkoa444
kolodenkoa444
12.02.2021 21:31

#include <iostream>

using namespace std;

int main() {

int n,x=1;

cin >> n;

while (x < n) {

 x *= 5;

}

if (x == n) {

 cout << "YES";

}

else {

 cout << "NO";

}

return 0;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота