• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Очень интересная задача

  • Автор темы Автор темы iks2
  • Дата начала Дата начала

iks2

Новые
Регистрация
22 Окт 2016
Сообщения
62
Реакции
0
Баллы
0
Очень интересная задача

Любое натуральное число N может быть сведено к 1 за конечное число шагов k по следующему алгоритму. Если число N делится на 3, то его надо разделить на 3. В противном случае к N надо прибавить 1.
пример: с числом 1 ничего делать не надо - оно уже равно 1. число 2 приводится к 1 так: 2 => 3 => 1.(за два шага) число 9 приводится к 1 так: 9 => 3 => 1(тоже за два шага)
Задача.
Написать программу, где задается число шагов k и находится НАИМЕНЬШЕЕ число, соответствующее этому шагу и приводящее к 1.
Вывести на экран 20 первых таких чисел.

Вопрос
Что изменится в программе, если в алгоритм будет внесено изменение: "....... В противном случае надо от N вычесть 1"?

Код:
DECLARE FUNCTION f& (k&)
CLS
DEFLNG A-Z

FOR i = 0 TO 20
   PRINT i; f(i)
NEXT
END

FUNCTION f& (k AS LONG)
SELECT CASE k
   CASE 0: f = 1
   CASE 1: f = 3
   CASE 2: f = 2
   CASE 3: f = 6
   CASE 4: f = 5
   CASE ELSE
      f = 3 * f(k - 3) - 2
END SELECT
END FUNCTION
 
Назад
Сверху