Предмет: Информатика,
автор: GeorgTretiy
Программа определяет, является ли число N...
Программа определяет, является ли число N, меньшее, чем число M, третьей степенью какого-либо числа.
При вводе кубов 1, 2, 3 и 5 выводится YES, но кубы остальных чисел не определяются (NO)
В чем может быть проблема?
Приложения:
Ответы
Автор ответа:
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:
Программа правильная, но у меня же есть другая версия решения. Хотелось бы узнать, почему не работает программа из вложения.
Моя программа вышла из Вашей. Причина, по которой Ваш вариант некорректно работал - погрешности извлечения корня путем возведения в дробную степень. Например, при извлечение куба числа 64 - ответ данной функции был 3.1 (не 4). Посему, Ваша программа выдавала остаток 1 и условие не выполнялось
Странно... При выполнении программы power(N,1/3) при N=64 в pascalABC выводится 4
Ах да, забыл отписать каким путем я вывел выше "извлечение". Отдельно разложил trunc и frac функции и вышло, что при trunc - 3, при frac - 1
Да, вы правы. Спасибо за объяснение)
Всегда пожалуйста
Похожие вопросы
Предмет: Математика,
автор: fangangsing
Предмет: Қазақ тiлi,
автор: aziz1855roo
Предмет: Химия,
автор: ultramarine52
Предмет: Физика,
автор: mishaginaregin
Предмет: Химия,
автор: DeS09871