Larisa Bulgakova
?>

Условие Дано натуральное число n. Необходимо определить, является ли n степенью числа 5. Формат входных данных Вводится целое число n (1≤n≤230 Формат выходных данных Выведите «YES», если n — степень пяти, и «NO» в противном случае. входные данные 625 42 выходные данные YES NO

Информатика

Ответы

a1rwalk3r

Так как тут мизерные ограничения, то для решения конкретно этой задачи можно просто проифать : если 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";

}

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Условие Дано натуральное число n. Необходимо определить, является ли n степенью числа 5. Формат входных данных Вводится целое число n (1≤n≤230 Формат выходных данных Выведите «YES», если n — степень пяти, и «NO» в противном случае. входные данные 625 42 выходные данные YES NO
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Голосова-Лобанов1555
Филиппович_Николаевич
sryzhova6392
omigunova39
fialkaflowers77
alexandergulyamov
Rafigovich1267
Наталья
inessa12006
Оксана170
Vos-sv
Lapushkina
seleznev1980
vladburakoff5
Бражинскене_Алексей