Предмет: Информатика, автор: GeorgTretiy

Программа определяет, является ли число N...
Программа определяет, является ли число N, меньшее, чем число M, третьей степенью какого-либо числа.
При вводе кубов 1, 2, 3 и 5 выводится YES, но кубы остальных чисел не определяются (NO)
В чем может быть проблема?

Приложения:

Ответы

Автор ответа: LikeSmileLJkee
1

var n,m,b: word;

begin

readln(m,n);

if n<m then

begin

b:=round(power(n,1/3));

if round(exp(ln(b)*3)) = n then writeln(true) else writeln(false);

end

else write('error');

end.


Вроде правильно выводит


GeorgTretiy: Программа правильная, но у меня же есть другая версия решения. Хотелось бы узнать, почему не работает программа из вложения.
LikeSmileLJkee: Моя программа вышла из Вашей. Причина, по которой Ваш вариант некорректно работал - погрешности извлечения корня путем возведения в дробную степень. Например, при извлечение куба числа 64 - ответ данной функции был 3.1 (не 4). Посему, Ваша программа выдавала остаток 1 и условие не выполнялось
GeorgTretiy: Странно... При выполнении программы power(N,1/3) при N=64 в pascalABC выводится 4
LikeSmileLJkee: Ах да, забыл отписать каким путем я вывел выше "извлечение". Отдельно разложил trunc и frac функции и вышло, что при trunc - 3, при frac - 1
GeorgTretiy: Да, вы правы. Спасибо за объяснение)
LikeSmileLJkee: Всегда пожалуйста
Похожие вопросы
Предмет: Химия, автор: DeS09871