Решаем задачи Абрамян на Паскале. While4

While4. Дано целое число $$N$$ ($$> 0$$). Если оно является степенью числа 3, то вывести True, если не является — вывести False.

Решение:

Решение, через деление:

Другие задачи из раздела While можно посмотреть здесь.

Комментарии:

Комментарии 16

  • Надо добавить условие. Т.к. 1 тоже является степенью числа 3, то
    if n=1 then
    write(true)
    else
    write(temp+3=0);

    • Являляется, но у нас в задаче N ($$>0$$) Тоесть неравенство строгое. А насколько мне известно только $$3^0=1$$

      • Тогда я не понял, почему задачник ругается на некоторых числах. ((

        • Решая задачи подряд в каждой следующей, наверное, ищешь что-то от предыдущей. Как результат мы(мое решение аналогично) проверяем число N на кратность(!!!!) трем, а не соответствие степеням 3.

          [/crayon]

          • Да есть такая проблема… Когда решаю на скорость не дочитываю задание до конца. 🙁
            Но иначе я не могу, слишком их уж много. Боюсь не дойти до конца. 🙁
            Вся надежда на людей которые скажут, что нить типо «не работает».
            Было:

            Стало:

  • uses PT4Web;
    var n: integer;
    begin
    Task(‘while4’);
    read (n);
    write ((n mod 3)=0)
    end.

  • да действительно… мало раз делили… надо наверно как то так(сейчас не начем копилировать, не могу проверить):

  • А кто-то может объяснить, что значит 1=А в конце программы?

    • 1=А Это логическое выражение. И получается в Write выводится значение логического выражения, если A равно 1 то выводиться True, если A не равно 1 выводиться False.

  • Можете эту же программу с while переделать на repeat, пробовал сам сделать, но не получилось. Помогите, пожалуйста, если не трудно)

    • Первый вариант с repeat:

      Второй вариант с repeat:

  • В первом варианте решения всегда True.
    Наверно temp:=A; надо поменять на temp:=1; .

  • Самый простой вариант в одну переменную:
    var
    n:real;
    begin
    readln (n);
    while n>1 do
    begin
    n:=n/3;
    writeln(n);
    end;
    writeln (n=1);
    end.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *