Вычисление суммы необычного ряда (5) - QBasic

Формулировка задачи:

Условия задачи 1. Сначала задается число которое образуется, если писать вместе кубы всех натуральных чисел от 1 до 100, то есть Пример 1, 8, 27, 64, ...., но пишется так 182764... 2. Из этого числа образуется нужный нам ряд берется первая цифра не равная 0 (нули игнорируются) в нашем случае это цифра 1 и ей сопоставляется первое слагаемое cos(1) 3. Берется вторая цифра, в нашем случае это 8, и ей сопоставляется второе слагаемое: cos(cos(cos(cos(cos(cos(cos(cos(1))))))))/2 Надеюсь вы поняли, количество косинусов равно нашей цифре Их вычисление от числа 1 (всегда) последняя цифра (2) равна номеру слагаемого. Надо просуммировать все слагаемые. Эта программа вычислила и получила число 4.495811. Учитывая погрешность в ответ пойдет число 4.496 Вопросы 1. Вам нравятся такие задачи? 2. Вы решали подобные задачи? 3. Можно ли здесь использовать рекурсию? 4. Есть ли иное решение данной задачи?
 
REM Карфаген должен быть разрушен!!
REM (Карфаген - это 2-3 типа задач (например матрицы,
REM Их сортировка, поиск максимума, вычисление суммы....))
REM
REM 182764125216343512729 ...
REM
REM  COS(1) + COS(COS(COS(... / 2 + ...
REM
REM  OTBET: 4.495811
REM
 
DECLARE FUNCTION f$ (n!)
DECLARE FUNCTION M! (n!)
 
CLS
CONST n = 100
DIM SHARED T AS STRING
 
FOR i = 1 TO n
   T = T + f(i)
NEXT
 
FOR i = 1 TO LEN(T)
   IF M(i) THEN
      x = 1
      FOR j = 1 TO M(i)
         x = COS(x)
      NEXT
      S = S + x / i
   END IF
NEXT i
 
PRINT S
END
 
FUNCTION f$ (n)
   f = LTRIM$(STR$(n ^ 3))
END FUNCTION
 
FUNCTION M (n)
   M = VAL(MID$(T, n, 1))
END FUNCTION

Код к задаче: «Вычисление суммы необычного ряда (5) - QBasic»

textual
DIM i AS LONG, n AS LONG, k AS LONG, s AS DOUBLE, x(9) AS DOUBLE
x(0) = 1
FOR i = 1 TO 9
    x(i) = COS(x(i - 1))
NEXT i
x(0) = 0
FOR i = 1 TO 100
    n = i ^ 3
    WHILE n
        k = k + 1
        s = s + x(n MOD 10) / k
        n = n \ 10
    WEND
NEXT i
PRINT s

13   голосов, оценка 3.846 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы