Консультация № 190178
28.11.2016, 04:28
0.00 руб.
0 4 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
По заданному натуральному числу А требуется найти наибольшее число В такое, что B2 <= A.
Входные данные
Во входном файле INPUT.TXT записано натуральное число A (A <= 103000).
Выходные данные
В выходной файл OUTPUT.TXT выведите максимальное натуральное число B, квадрат которого не превосходит A. Число B следует выводить без лидирующих нулей.
Пример
№ INPUT.TXT OUTPUT.TXT
1 17 4

мое решение не принимает, так как выводит больше чисел, чем надо


Приложение:
var
x, n, y: integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(n);
x := 2;
while trunc (sqrt(x)) < n do
begin
y := trunc(sqrt(x));
write(y);
x := x + 1
end;
end.

Обсуждение

давно
Старший Модератор
31795
6196
29.11.2016, 18:38
общий
29.11.2016, 18:38
Адресаты:
мое решение не принимает, так как выводит больше чисел, чем надо

Вы неправильно подошли к вопросу.
Вам нужно
выведите максимальное натуральное число B, квадрат которого не превосходит A.

Это значит только одно число. Решать нужно приблизительно так:
[code lang=pascal]x:=n;
while frac(sqrt(x))>0 do
dec(x);
write(x);[/code]
ps:можно обойтись только одной переменной n.
Соответсвенно, если строк во входном файле несколько, то и работа с файлом INPUT.TXT
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
30.11.2016, 19:13
общий
это ответ
Здравствуйте, savoxova!


[code lang=pascal]var
n:longint;
begin
write('n:=');
readln(n);
while frac(sqrt(n))>0 do dec(n);
writeln('a=',sqrt(n):1:0);
end.[/code]
Вам нужно найти максимальное, а это значит одно число. Цикл начнет поиск с максимального числа близкого к N, в крайнем случае остановится на 1.
Удачи!
4
спасибо за идею! и решение! жаль по времени не проходит
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
30.11.2016, 19:15
общий
Адресаты:
103000 выходит за пределы INTEGER(Pascal)/
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
03.12.2016, 00:22
общий
Адресаты:
Цитата: savoxova
спасибо за идею! и решение! жаль по времени не проходит

О времени в вопросе ничего не говорилось.
[code lang=pascal]writeln( trunc (sqrt(n)));[/code]
Должны вложится.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа