profile
[/banner_gorizont_adaptive]
Размещено 4 года назад по предмету Информатика от NicolasCage

Напишите программу, которая вводит натуральное число N и выводит на экран чётные положительные степени числа 2, не большие, чем N , в порядке убывания.

Входные данные:
Входная строка содержит одно натуральное число N .

Выходные данные:
Программа должна вывести в одну строчку через пробел чётные положительные степени числа 2, не большие, чем N , в порядке убывания. Если таких нет, программа должна вывести число 0.

  1. Ответ на вопрос
    Ответ на вопрос дан vladmor
    Вариант №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





    1. Ответ на вопрос
      Ответ на вопрос дан A1dar
      Линейка для такой задачи? Введите 2147483647
    2. Ответ на вопрос
      Ответ на вопрос дан A1dar
      И очень глупо возводить 2 в N-ную степень
    3. Ответ на вопрос
      Ответ на вопрос дан A1dar
      Теперь работает
    4. Ответ на вопрос
      Ответ на вопрос дан A1dar
      a:=a shl (i-i mod 2); можно записать так
  2. Ответ на вопрос
    Ответ на вопрос дан A1dar
    var
      n: integer;
    procedure p(i: integer);
    begin
      if (i shr 30 = 0) and (i shl 2 <= n) then p(i shl 2);
      p(i shl 2);
      write(i, ' ')
    end;
    begin
      read(n);
      if n < 4 then write(0)
      else p(4)
    end.
    1. Ответ на вопрос
      Ответ на вопрос дан vladmor
      Глупо, согласен, но работает. А ваш код дает вот это: Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека
    2. Ответ на вопрос
      Ответ на вопрос дан A1dar
      Просто забыл убрать одну строчку
    3. Ответ на вопрос
      Ответ на вопрос дан A1dar
      p(i shl 2); надо убрать и все работает
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.