Программа определяет, является ли число N... Программа определяет, является ли число N,...

0 голосов
68 просмотров

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


image

спросил от (62 баллов) в категории Информатика

1 Ответ

0 голосов
ответил от Начинающий (552 баллов)

var n,m,b: word;

begin

readln(m,n);

if n

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.


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

оставил комментарий от БОГ (678k баллов)

Программа правильная, но у меня же есть другая версия решения. Хотелось бы узнать, почему не работает программа из вложения.

оставил комментарий от Начинающий (552 баллов)

Моя программа вышла из Вашей. Причина, по которой Ваш вариант некорректно работал - погрешности извлечения корня путем возведения в дробную степень. Например, при извлечение куба числа 64 - ответ данной функции был 3.1 (не 4). Посему, Ваша программа выдавала остаток 1 и условие не выполнялось

оставил комментарий от БОГ (678k баллов)

Странно... При выполнении программы power(N,1/3) при N=64 в pascalABC выводится 4

оставил комментарий от Начинающий (552 баллов)

Ах да, забыл отписать каким путем я вывел выше "извлечение". Отдельно разложил trunc и frac функции и вышло, что при trunc - 3, при frac - 1

оставил комментарий от БОГ (678k баллов)

Да, вы правы. Спасибо за объяснение)

оставил комментарий от Начинающий (552 баллов)

Всегда пожалуйста

...