djdkdksDkskd
13.07.2021 03:44

Написати програму на delphi 7
перевірте чи є задане число n квадратом цілого числа.
у вхідному файлі input.txt записано єдине ціле число n ([tex]-10^{9} \leq n\leq 10^{9}[/
якщо дане число є квадратом цілого числа, то у вихідний файл output.txt виведіть корінь квадратний цього числа, у протилежному випадку виведіть найближче число, що є квадратом числа
наприклад:
якщо input.txt 4 то output.txt 2
якщо input.txt -4 то output.txt 0
якщо input.txt 23 то output.txt 25

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Волкова24
12.09.2021 12:22
Если панель инструментов "рисование" или "текстовые эффекты" не видна, перейдите в меню по пути вид – панели инструментов для активации панели инструментов. на панели инструментов рисование или текстовые эффекты щёлкните значок галерея текстовых эффектов. значокв диалоговом окне галерея текстовых эффектов выберите стиль текстового эффекта и нажмите кнопку "ок". объект текстового эффекта вставляется в документ. объекты текстовых эффектов являются пользовательскими фигурами. с панели инструментов "параметры трёхмерного изображения" можно в любой момент перейти от двумерного просмотра к трёхмерному и обратно. дважды щёлкните объект, чтобы перейти в режим редактирования текста. замените стандартный текст эффекта своим. чтобы выйти из режима редактирования текста, нажмите клавишу esc.
0,0(0 оценок)
Ответ:
flak202
05.12.2020 01:04
Вариант №1 (не совсем удачный, как было отмечено в комментариях).

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)
var n,i,m:integer;
flag:boolean;

begin
  readln(n);
  flag:=false;
  if (n mod 2<>0)then i:=n-1 else i:=n;
  while i>0 do begin  
    if power(2,i)<=n then begin
      write(power(2,i),' '); flag:=true;
    end;
    i:=i-2;
end;
if not flag then writeln(0);
end.

Тест №1
1025
1024 256 64 16 4

Тест №2
1
0

Вариант №2

var a,i,n: integer;
begin
  a:=1;readln(n);
  i:=trunc(log2(n)); //получим степень двойки для n
  //если i нечетное,
  //то первое искомое число получаем путем сдвига влево на i-1 в
  //двоичном представлении числа иначе сдвиг на i
  if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;
  //далее получаем числа сдвигая вправо на 2 разряда
  //в двоичном представлении числа
  while a>=2 do begin
    write(a,' ');
    a:=a shr 2;
  end;
end.

Тестовое решение:
2147483647
1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота