Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Basic (http://www.tehnari.ru/forumdisplay.php?f=127)
-   -   Очень интересная задача (http://www.tehnari.ru/showthread.php?t=249683)

iks2 29.10.2016 11:27

Очень интересная задача
 
Любое натуральное число 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



Часовой пояс GMT +4, время: 06:18.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.